清梦惹人醉 发表于 2021-8-26 22:00:30

为什么计算结果不是24

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

如题,按照逻辑计算不应该是24么,怎么跑出来是22?

荆襄楚樊 发表于 2021-8-27 17:49:53

本人用2019是24,版本不一样,结果不一样。
i5+ 1 = i6
i6 + 1= i7;i7赋给i6, i6是i7,(i7 + i7 = 14)
i7 + 1 = i8; (14 + i8 == 22)
个人认为,本人初学者。

万千只cnm 发表于 2021-8-27 18:02:28

编译器不同不一定一样
纠结这个没什么意义

lhgzbxhz 发表于 2021-8-29 19:40:08

q = (++i)+(++i)+(++i);
三个++i执行顺序是不一定的,所以结果未定义
页: [1]
查看完整版本: 为什么计算结果不是24