我想的结果是 0 0 0为啥输出是0 1 0?????
#include<stdio.h>int main()
{
int i=0;
printf("%d,%d,%d\n",i++,--i,i++);
return 0;
}
为啥结果为:0 1 0 第一次i++时打印为0这时的i其实是1然后--i就是1-1所以是0最后i++打印时为0,实际为1. 我也认为应该是 0, 0, 0
但是我的编译器却是 -1, -1, 0{:10_262:}
但是好像看汇编又能解释,真是纠结 根据编译器和机器的不同,结果会有所不同 如果,你分三次打印,会得到你想要的结果,一般编程时不要用太复杂的语法,学习和练习,测试无所谓
#include <stdio.h>
int main()
{
int i = 0;
printf("%d\n",i++);
printf("%d\n",--i);
printf("%d\n",i++);
} 因为加加减减运算符放在标识符后面的话,下一条语句才生效。所以,i++,i-- 这些其实并不会影响到 i 当前打印的值。
而如果将加加减减运算符放在标识符前面的话,是即时生效的。又因为参数传递通常是自右向左依次入栈,
----------------------------------------------------------------------------------
按以上规律的话,运行结果应该是我这里的是正确的:
有些编译器不同可能运行结果也不一样。
这应该跟编译器有关
页:
[1]