C语言中scanf函数的输入格式
程序如下:main(){intx,y,z;scanf("%d%d%d",&x,&y,&z);printf("%d\n",x+y+z);}输入:25,13,,10输出为什么...
程序如下: main() { int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("%d\n",x+y+z); } 输入:25,13,,10 输出为什么是3278? 各位,我知道正确的格式,我是想知道为什么是3278,我换输入:0,0,0,就是3253了.也就是这个数字是怎么来的,我用的是Turbo c 2.0,也就是想知道,带逗号后的这个输出数字是如何得到的.为什么是这个数字?谢谢!
展开
4个回答
展开全部
因为你的scanf函数中的格式与输入的格式不对,即
scanf("%d%d%d",&x,&y,&z);这句中格式应该与后面的变量一致,三个%d之间要加逗号,改为scanf("%d,%d,%d",&x,&y,&z);改成这样结果就是对的,而是你那样的做法,相当于变量x,y,z没有初始化,所以结果是一个随机数。
scanf("%d%d%d",&x,&y,&z);这句中格式应该与后面的变量一致,三个%d之间要加逗号,改为scanf("%d,%d,%d",&x,&y,&z);改成这样结果就是对的,而是你那样的做法,相当于变量x,y,z没有初始化,所以结果是一个随机数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照25,13,,10
这样的输入方式,实际上只是对x进行了赋值,值为25.
而y和z会在x的地址处,分别向下偏移4个字节进行取值。
这样就会造成了你上面的结果。
你可以把x、y和z的地址打出来,试试看。
int
main(int
argc,
char*
argv[])
{
int
x,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("%d\n",x+y+z);
printf("%d\n",x);
printf("%d\n",y);
printf("%d\n",z);
printf("%d\n",&x);
printf("%d\n",&y);
printf("%d\n",&z);
return
0;
}
希望可以帮到你。
这样的输入方式,实际上只是对x进行了赋值,值为25.
而y和z会在x的地址处,分别向下偏移4个字节进行取值。
这样就会造成了你上面的结果。
你可以把x、y和z的地址打出来,试试看。
int
main(int
argc,
char*
argv[])
{
int
x,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("%d\n",x+y+z);
printf("%d\n",x);
printf("%d\n",y);
printf("%d\n",z);
printf("%d\n",&x);
printf("%d\n",&y);
printf("%d\n",&z);
return
0;
}
希望可以帮到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题实际上意义不大,%d之间无空格,输入时可以用空格键隔开或者Tab键,但是像这样scanf("%d,!%d**%d",&a, &b, &c),那你输入时,应该这样输入23,!-56**678
这样输入a,b,c的值就分别是23,-56,678。楼上那位有一点错误,scanf("%d,!%d**%d",&a, &b, &c),%d之间间隔符号没必要和&a,&b,&c一样 我这样写也是可以的,但是这是为了区分,没有谁闲着没事写成这样子。我用的是codeblocks
这样输入a,b,c的值就分别是23,-56,678。楼上那位有一点错误,scanf("%d,!%d**%d",&a, &b, &c),%d之间间隔符号没必要和&a,&b,&c一样 我这样写也是可以的,但是这是为了区分,没有谁闲着没事写成这样子。我用的是codeblocks
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询