fightting 发表于 2017-10-22 20:50:26

我想的结果是 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

新手·ing 发表于 2017-10-22 21:19:12

第一次i++时打印为0这时的i其实是1然后--i就是1-1所以是0最后i++打印时为0,实际为1.

丶忘却的年少o 发表于 2017-10-22 21:32:01

我也认为应该是 0, 0, 0
但是我的编译器却是 -1, -1, 0{:10_262:}
但是好像看汇编又能解释,真是纠结

hacker.jin 发表于 2017-10-22 21:47:34

根据编译器和机器的不同,结果会有所不同

hacker.jin 发表于 2017-10-22 21:57:39

如果,你分三次打印,会得到你想要的结果,一般编程时不要用太复杂的语法,学习和练习,测试无所谓


#include <stdio.h>
int main()
{
    int i = 0;
    printf("%d\n",i++);
    printf("%d\n",--i);
    printf("%d\n",i++);
}

ba21 发表于 2017-10-23 10:26:48

因为加加减减运算符放在标识符后面的话,下一条语句才生效。所以,i++,i-- 这些其实并不会影响到 i 当前打印的值。

而如果将加加减减运算符放在标识符前面的话,是即时生效的。又因为参数传递通常是自右向左依次入栈,
----------------------------------------------------------------------------------
按以上规律的话,运行结果应该是我这里的是正确的:
有些编译器不同可能运行结果也不一样。

weizhongyang 发表于 2017-10-23 11:12:03

这应该跟编译器有关
页: [1]
查看完整版本: 我想的结果是 0 0 0为啥输出是0 1 0?????