C语言 弱智问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 10:26:21
i=5;
x=(i++)+(i++)+(i++);

这题 x 的结果等于 24 , i 等于 8.

i=8 我是明白 可是 x 为什么等于24 呢 ???

那 是怎么个运算顺序 什么个思路 …… 我是初学者

那这 每个 括号里 等于多少 ? 哎~ 1点也不明白/。。

我感觉是 第1个括号等于5, X等于6 第2个括号等于6,X等于7,第3个括号等于7,X等于8

不是 ++ 在后面 是先用后加吗 ??? 哎 实在有太多不明白的地方了~

我QQ393987124 哪位高手加我~ 我会努力学好C语言的
i=5;
x=(i++)+(i++)+(i++);
保证是 24 不信 你们试试 我刚试过 我也不信 可是 事实摆在眼前 我就是不明白~ 所以问问个位 大虾!

i=5;
x=(i++)+(i++)+(i++);

这个表达式 将它这样写就很好理解了
x=i+i+i;
i++;
i++;
i++;
所以x应该等于5+5+5=15
将15赋给x后i再自增3次等于8

问题补充:
斑竹说x=(i++)+(i++)+(i++); 等于24 那显然是错的
只有 x=(++i)+(++i)+(++i);这个表达式的结果才等于24
它的性质是:
i++;
i++;
i++;
x=i+i+i;
也就是i先自增3次,然后再相加,结果放入x中。

是15 和 8吧

这个和编译器的处理有关,有的可能结果是15,即每个括号都是5,你的是24即每个括号内都是8,这样的运算取决于编译器的内部的处理逻辑,很难控制,因此在实际的应用中尽量少使用这种i++或者++i等的很复杂的逻辑。结果往往出人意料。正常分析你的这条语句应该是18

i++
是先数据赋值再加一。
++i
是先加一再数据赋值。
例如:
程序:
i=1
j=i++

结果:
i=2
j=1

程序:
i=1
j=++i

结果:
i=2
j=2

程序:
i=5;
x=(i++)+(i++)+(i++);

C的编译程序是从左到右扫描的,
x=(5)+(6)+(7)=18
因为i在运算中不断改变所以导致后面加6,7

i=6
i=7
i=8
都知道
最后i=8
x=i+i+i=8+8+8=24

比较同意这位的

这个和编译器的处理有关,有的可能结果是15,即每个括号都是5,你的是24即每个括号内都是8,这样的运算取决于编译器的内部的处理逻辑,很难控制,因此在实际的应用中尽量少使用这种i++或者