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

求大佬帮解决一个问题,我有点绕

打死也要学 发布于 2020-04-22 17:14, 2145 次点击
#include<stdio.h>
void main()
{
    int i=5,j=5,p,q,r;
    p=(i++)+(i++)+(i++);
    q=(++j)+(++j)(++j);
    printf("%dn%dn%dn%dn",p,q,i,j);
 }
这个p输出是18,我明白,可是为啥q输出是22啊,不是应该是q=6+7+8=21吗?我完全想不明白求大佬指点一下,谢谢
6 回复
#2
八画小子2020-04-22 17:56
这种蛋疼又毫无意义的问题,也只有学校的老师会问。这种代码要是在公司出现,自觉走人,以防被骂死。
#3
lin51616782020-04-22 19:35
    p=(i++)+(i++)+(i++);
    q=(++j)+(++j)(++j);

是未定义行为
对于未定义行为具体内容较多 不展开描述
建议百度搜索 C语言 未定义行为
#4
hbccc2020-04-22 22:44
中间缺符合了吧
#5
thhkb2020-04-22 23:07
不用太过于纠结这个,不同编译器编译出来都不一样
#6
ANIKITYN2020-04-23 08:56
像这种比较复杂的自增自减在不同编译器里会有不同的结果。。。别纠结
#7
打死也要学2020-04-24 08:28
好的,谢谢各位,我还以为是我逻辑缺陷了
1