c语言中,int i=3,k=(i++)+(i++)+(i++);为什么执行结果是后k=9,i=6?求解。

如题所述

这里涉及到运算顺序的问题。i++指先使用i的值,再将i加一。所以,k先等于三个i相加,结果是k=9。
i的值使用完毕后,再从第一个i++开始,对i加一,此时i=4;对第二个i++使i加一,此时i=5;最后对第三个i++使i加一,此时i=6。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-14
这个是因为(i++)不就是以i的值来算吗?加法是从左至右每两个和在一起计算,i++是算完后再加的吧
楼主还要注意这个问题
i=5; (++i)+(++i)+(++i)=22; 因为是从左至右计算,++i是要先算的,因此前两个(++i)统一算为7+7=14;再算最后一个14+8=22;

c语言中,int i=3,k=(i++)+(i++)+(i++);为什么执行结果是后k=9,i=...
这里涉及到运算顺序的问题。i++指先使用i的值,再将i加一。所以,k先等于三个i相加,结果是k=9。i的值使用完毕后,再从第一个i++开始,对i加一,此时i=4;对第二个i++使i加一,此时i=5;最后对第三个i++使i加一,此时i=6。

c语言程序:i=3,k=(i++)+ (i++)+(i++),为什么k=9?
这题硬要说就是后置++是先用再加,也就是先取出i的值计算,在表达式结束后再+1。建议楼主不要看类似一个表达式中有多个++,尤其是同一变量++的东西,因为这种行为在C标准中尚未定义,也就是i的运算结果和编译器有关,i最后是4还是6谁也说不准。在实际编程中一定不要有这种表达式出现。

int i=3;k=(i++)+(++i)+(i++);求k,i的值
int i=3;k=(i++)+(i++)+(i++);k=9,i=6i=6不管哪种,i都是加了三次,由3到最后的6 主要区别在于i++是先运算,后执行i=i+1 ++i是先执行i=i+1,后运算 所以第一个先执行了两次i=i+1后i=5,三个相加后结果是15,然后再加1,i=6 第二个是执行了三次i=i+1后i=6,三个...

C语言 int i = 3, k = (++i) + (++i) + (i++);求大神解释为什么k = 15...
k=(++i);k=k+(++i);k=k+(i++),发现结果是k=14的,再来 k=(++i)+(++i);k=k+(i++);这是会发现在执行完第一行代码即就是k=(++i)+(++i)后k=10,也就是说多出来的一个1在这儿,问什么呢 打开对应的汇编语言会发现这个 系统将加号左面的i第一次自加后i=4 ...

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

C语言中,int i = 3; k = (++i)+(++i)+(++i) 问k的值是多少? 很是纠结...
答案应该是:15 解释如下:++i表示先自加,然后再用i,也就是说i本来是3,经过++i之后,变成了4,在进行运算,所以k=(++i)+(++i)+(++i)=4+(++i)+(++i) ;i变成了4 所以第二个++i是以4可是的,经过自加后为5,在进行运算,则为4+5+(++i);第三个与第二个类似,是以5开始的,...

请教一个C语言顺序点的问题
int i = 3;int k=(++i)+(++i)+(++i);执行后k的值是多少?不同的编译器有不同的结果,可能是16(gcc),也可能是18(vc)。为什么会这样呢?在C++标准中有一个很重要的概念:sequence points(顺序点)。原文定义如下:At certain specified points in the execution sequence called sequence...

C语言:如果i=3,则k=(++i)+(++i)+(++i)执行过后k的值为?好评立刻。
k=(++i)+(++i)+(++i)++在变量前时优先级最高,因此优先于其他基本运算符执行,整个式子按从左到右依次解释执行 +是一个二元运算符,执行(++i)+(++i)时,由于括号优先级高于一切,式子从左到右计算,因此先计算第一个++i,此时i=4;再计算第二个++i,此时i=5;再计算+号,得5+5=10;...

C语言中,如果i=3,则k=(i++)+(++i)+(i++)k的值是12,为什么我算出来都是...
i++,先使用i的值 再执行i=i+1 ++i,先执行i=i+1,再使用i的值 k=(i++)+(++i)+(i++)(i++) 最后为4 (++i)最后还是4 k=12

C语言中i=3,k=(++i)+(++i)+(++i)为什么i先自增两次i=5
这属于未定义行为。。。无意义,不要深究,每个编译器都不一样的,是错误写法,应避免

相似回答