注册 登录
编程论坛 C语言论坛

关于 变量++ 和 ++变量 的问题

Moumon 发布于 2020-05-16 20:03, 2643 次点击
//各位大佬,我刚学习C语言。在学习中有一个疑问!为什么“++j”打印出来是4.
//打印时,从右向左开始。所以第一行输出是3,2,1.i++是先运算再自加1.我能理解。
//第二行,按照打印逻辑,不应该是   3,2,2吗?  请大佬们解惑!!

#include <stdio.h>
int main(void)
{
    int i = 1;
    int j = 1;
    printf("%d,%d,%d",i++,i++,i++);
    printf("%d,%d,%d",j++,j++,++j);

    return 0;
}
运行结果:
3,2,1
3,2,4
7 回复
#2
吕孟伟2020-05-16 20:07
搜一下论坛里的很多内容可以解决你的这个问题。
#3
Moumon2020-05-16 20:39
回复 2楼 吕孟伟
谢谢!
#4
BJenjoy2020-05-18 16:17
这个没意义,随机的,看编译器
#5
Moumon2020-05-19 13:15
回复 4楼 BJenjoy
嗯,好的。谢谢大佬指点!
#6
胡晓影2020-05-19 14:10
按理说结果不应该是
321
334吗,我是小白,求教
#7
rjsp2020-05-19 16:52
以下是引用胡晓影在2020-5-19 14:10:46的发言:

按理说结果不应该是
321
334吗,我是小白,求教

"按理",你按的谁的理呢?
如果你按的是 谭浩强的理,那我没办法。
如果你按的是 C/C++标准的理,那 C/C++标准 规定这属于 未定义行为。所谓 未定义行为,就是编译器没考虑这种情况该怎么处理,一切结果都有可能。包括 直接格式化硬盘 等都有可能。
#8
Moumon2020-05-25 18:41
回复 7楼 rjsp
是的,我现在也明白了!谢谢大佬解析!

[此贴子已经被作者于2020-5-25 18:42编辑过]

1