C语言 22.如果i=3,则k=(++i)+(++i)+(i++)执行过后k的值为 ,i的值为 。(1级)

要详细解释
2025-04-07 11:24:00
推荐回答(3个)
回答1:

i=6;
不知道你是用什么编译器编译的,在VC++里面K=15;
解释:++是自加运算符
自加运算符放在前面和后面优先级是不一样的,也即是说编译的时候,
(1)先执行的是两个放在前面的自加运算,运算结果i=5;
(2)计算K值,5+5+5=15
(3)执行放在后面的自加运算,运算结果i=6

回答2:

15
由于编译器从右向左扫描程序分析,是从右向左执行的,如果你学过编译原理,你就知道了。
下面分析如下,值得注意的是i++,i的值加1,而表达式的值不变.++i,表达式和i都加1
详细分析如下

// i=3 执行i++后 i++ 值3 i值4
// i=4 执行++i后 ++i 值5 i值5
// i=5 执行++i后 ++i 值6 i值6

这样分析结果是14,但是VC运行结果是15,不同编译器结果会不一样。
所以我现在也很纠结。

回答3:

k等于14 i=6
i++ ;i先参与计算再加1;++i 先加1,再参与计算;有括号算括号里的
首先 ++i i加1变为4;k=4
之后 ++i i加1变为5;k=4+5
再之后 i++之后i再加1;变为6再算括号之外的;k= 4+5+6=15;
不明白的话给我留言 ;