秋天落叶视频:一个c程序 结果为什么是这样啊,请教!!!

来源:百度文库 编辑:中科新闻网 时间:2024/05/06 17:02:59
main()
{ int i,y=10;
for (i=0;i<3;i++)
printf(" %d",y=i++);
}
结果为 10 0 1
如果把 i++ 该为 ++i
结果为: 10 1 2
为什么是这样啊
为什么会有10的出现我
不解

每次先打印y的值, 因为=的优先级别很低。 然后如果是i++的话, 那么y赋值i, 然后i赋值i+1; 如果是++i的话, 那么i先赋值i+1, 然后, 再把i的值赋给y。 于是就得到上述结果了。

你考虑一下这个问题就知道为什么先打印y的值了。
printf("%d", i++); 这个你明白吧, 就是先打印i, 然后i+1

他的等价形式就是printf("%d", i=i+1);这就是之前的那个为什么先打印y了。

因为 y初始值 为 10
在第一次输出后 才把 i的值 付给 y 这时候 y=0,然后 i++变为 1,下一次输出 y=0,然后 把 1付值 给 y,i++变为2 ,再一次 输出 y=1 ,这个时候 循环结束了

++i 我想你会明白了,是先加 1 再付值 就会得到 10 1 2

这是跟编译器有关的,这样的问题你最好不要去想,你可以把他改为你自己要的功能的,对吧。可能这个问题是编译器开始并不先计算后面的y的植,只有输出后才计算吧

当然了因为Y=10是初始值吗你把Y=I++去掉Y=就行了