c语言中定义i=5.q=(++i)+(++i)+(++i)+(++i).q为什么等于22啊

c语言中定义i=5.q=(++i)+(++i)+(++i)+(++i).q为什么等于22啊我用的是vc++6.0求大神详细解答c语言中定义i=5.输出q=(++i)+(++i)+(++i),i怎么=8啊
q为什么等于22啊

建议别钻这个牛角尖,知道前++先增1再参与运算,后++先参与运算再增1就可以了。i=5.q=(++i)+(++i)+(++i)+(++i);,任何编译器的解释都算不出q=22!如果是i=5,q=(++i)+(++i)+(++i);,则有些编译器的解释算出来是q=22,有些则得到q=24的结果。vc++6.0编译器的结果是前者,因为它把前两项先算出来存储在一个临时变量中,然后再加最后一项来计算的——设这个临时变量为x,则x=(++i)+(++i)=7+7=14,q=x+(++i)=14+8=22。而得出24的编译器则是把前++都先计算完,最后才加起来,即q=8+8+8=24。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-07
等于22? 没搞错吧?
第一遇到i是6,第二次i是7 ,所以前两个相加是 7 + 7 = 14 ,遇到第三个时候i是8 ,相加是14+8 = 22 , 遇到第四个是9 , 相加等于22 + 9 = 31 。 我算了几遍了都是31追问

对不起我多打一个

谢谢你的解释我懂啦嘿嘿

本回答被提问者采纳
第2个回答  2016-06-07
p=15因为它是先取i的值,然后i再自加1的,所以P是5+5+5=15,运算完之后i自加到8

一般会区别 i++与++i; i++是i先不自加,在语句完后自加,++i先自加追问

我说为什么是22

能解释一下吗谢谢

i=5,s=(++i)+(++i)+(++i)为什么等于22?
先从简单的说起吧,也就是i=5,s=(++i)+(++i);这个结果应该等于14而不是13,为什么呢?看一下下面的汇编代码(通过生成exe反汇编得到)(其中-4ebp是变量i在堆栈中地址,-8ebp是s的地址,eax是寄存器ax)movl $5, -4(%ebp) ;将i赋值为5 leal -4(%ebp), %eax;取i的地址到ax incl (...

请各位高手指点一下 已知i=5; q=(++i)+(++i)+(++i);输出q=?
对于写出(++i)+(++i)+(++i)表达式的C语言书籍作者们,我对你们已经忍无可忍了,这种书应该停止出版。

c语言设i=5,p=(++i)+(++i)+(++i)为什么等于22
i++是先执行整个表达式的值,再加1;++i是先加1后再执行整个表达式的。所以K的值为9,i的值为6。如果i=3,则k=(++i)+(++i)+(++i)执行过后k的值为 18 ,i的值为6

C语言问题 i=5 (++i)+(++i)+(++i)的值是多少?求详解瓦
是22,首先声明不同的编译器结果会不一样啊(当如计算a+b时,标准C没规定是先执行a还是先取b,目的就是让编译器设计者可以充分利用寄存器提高速度,故不推荐楼主再深入研究这些问题,因为没用)vc里是22啊,首先计算顺序是从左到右,所以先算++i+(++i),则先执行++i,再++i,此时i则变成7了...

是C语言、我好笨求解!就是i=5;j=(++i)+(++i)+(i++);然后输出等于i=8...
++i由于++前置,所以先自加再参与运算第一个++i后i变成6,然后第二个++i后i变成7,然后i++的时候由于后置,所以先参与运算,然后再自加,所以这个式子就变成了7+7+7=21,然后算完以后i再自加1,所以i就变成8了。

...i=5,k=(i++)+(i++)+(i++),k=(++i)+(++i)+(++i)的运算与区别?_百度...
i++先运算再让i自加1,++i先自加1再将i的值用于运算,就这区别还有就是比如k=(i++)+(i++)+(i++)这个语句在不同的系统中结果不一样,有的是让三个i的值先全为5即5+5+5加了过后再让i自加三次输出k值为15 i的值为8,有的系统下是5+6+7输出k值18 i的值8,编程中一定要尽量...

i=5 J=(++i)+(++i)+(i++) 怎么算 C语言中的
i=5意思是i的赋值是5,J=(++i)+(++i)+(i++) ++i是先求出i的值,i再+1,i++是先算i+1的值 我也是初学者,不对的话请谅解 如果需要补充的 请告诉我 我正在学习

main() { int i=5,j; j=(++i)+((++i)+(++i)+(++i))*2; printf("%d %d...
感想,我们到底是为了研究C语言呢,还是要研究编译器?感觉这种源代码不是用来阅读的,而是用来解谜。 决定了,以后学习C语言坚决抛弃++操作符。附:思考题,VC++6.0的debug模式中,在i=5的前提下,为什么 j = (++i) + (++i) + (i++) + (i++); \/\/ j = 28 j = (i++) + (i+...

为什么在c语言中,i=1;i=(++i)+(++i)+(++i)+(++i);得到
在C语言中,尝试写出i=1;i=(++i)+(++i)+(++i)+(++i);这样的代码,是严格禁止的。这种写法,就如同触碰了不该碰的电门,完全属于自寻死路的行为。这在C标准里被称为"未定义行为",这个术语实则传达了更为恶劣的态度:相关情况早已被充分理解并讨论,最终的决定是"不予理睬,任由后果自负"。...

C语言问题 i=5 (++i)+(++i)+(++i)的值是多少?求详解瓦
等式里面有++i,所有的i都自增1,有i++,等式里面i值不变,运算完后i变为i+1。我主要讲一下第三个,应该是18,有三个++i,所以每个i都是3+1+1+1=6,所以结果是18.

相似回答