C语言中,i=1,a=(++i)+(++i),b=(i++)+(i++)。a和b分别是多少?

如题所述

按运算规律进行推算,都是比结果少1;头大了。

#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=1;
//int a,b;
printf("i=%d\n",i);
printf("(++i)=%d\n",++i);
printf("i=%d\n",i);
printf("(++i)+(++i)=%d\n",(++i)+(++i));
printf("i=%d\n",i);
printf("a=(++i)+(++i)+(++i)=%d\n",(++i)+(++i)+(++i));
printf("i=%d\n",i);
printf("(++i)+(++i)+(++i)+(++i)=%d\n",(++i)+(++i)+(++i)+(++i));
printf("i=%d\n",i);
printf("b=(++i)+(++i)=%d\n",(i++)+(i++));
system("pause");
}
结果:
i=1
(++i)=2
i=2
(++i)+(++i)=8
i=4
a=(++i)+(++i)+(++i)=19
i=7
(++i)+(++i)+(++i)+(++i)=39

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-23
a = 3 ,b = 9。
a = (++i)+(++i),此时,在第一个括号里,++i是先运算再自加,所以括号里是1,i = 2。后面一个括号里是2 ,i 再次自加,变成三。所以 a = 3
b = (i ++) +(i++)。由于程序的执行顺序,在第一个括号里的时候,i = 3,自加后带入运算,所以括号里是4。后面一个括号里是5,此时 i = 5,所以b = 9
第2个回答  2015-03-23
++在前是先自加在运算,在后是先运算再自加,所以在两个等式没有联系的情况下,a=4,b=2.
你自己亲自试试比在这里问有效
第3个回答  2015-03-23
#include<stdio.h>

int main()
{
    int i=1;
    int a=(++i)+(++i);
    int b=(i++)+(i++);
    printf("a=%d\n",a);
    printf("b=%d\n",b);
  
}

dty@ubuntu:~$ gcc t.c

dty@ubuntu:~$ ./a.out 

a=6

b=6

追答

实测

第4个回答  2015-03-23
a=6,b=6;在计算a=(++i)+(++i)时限吧++i执行完即i=3,然后a=i+i=6;
b=(i++)+(i++),i=3,系统会把i=3直接带入始终,古b=6;
相似回答