C语言中scanf函数的输入格式

程序如下:
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,也就是想知道,带逗号后的这个输出数字是如何得到的.为什么是这个数字?谢谢!

按照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;

}

希望可以帮到你。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-24
应该是输入25 13 10
中间用空格,或者回车,Tab等空白符都可以,但是不要用逗号
要按输入格式控制的字符串来

相反的,要是scanf("%d,%d,%d",&x,&y,&z);这样就一定得用逗号分隔

按lz的输入方式,仅有x被正确赋值为25,其他的值没有赋给yz,一种仍然是任意的垃圾值
由于输入25后有输入了逗号,不是原先的设定的格式,所以就认为输入结束了,yz没有被赋值
详细的可以通过调试,调出xyz的值来查看
第2个回答  2011-07-25
因为你的scanf函数中的格式与输入的格式不对,即 scanf("%d%d%d",&x,&y,&z);这句中格式应该与后面的变量一致,三个%d之间要加逗号,改为scanf("%d,%d,%d",&x,&y,&z);改成这样结果就是对的,而是你那样的做法,相当于变量x,y,z没有初始化,所以结果是一个随机数。
第3个回答  2011-07-24
你以空格分开 输入: 25 13 10
scanf中的没有,你就不用输入逗号,要按照格式来。
第4个回答  2011-07-24
scanf("%d%d%d",&x,&y,&z); //scanf("%d,%d,%d",&x,&y,&z);
相似回答