如下程序的结果 (要求(java)画图来解释) int a = 3, b; b = (a++)+(++a)+(a++)*2+a+(++a);以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
如下程序的结果 (要求(java)画图来解释) int a = 3, b; b = (a++)+(++a)+(a++)*2+a+(++a);
只要你记住++在前边,就是先把变量值+1之后再计算,把++放后边,就是先用变量当前的值计算,然后在把该变量值+1,这样你就应该可以很容易的计算出这个答案了.
b = (a++) +(++a)+(a++)*2+a+(++a)对应的是
b = (3++) 此时先把a的值赋给b,然后a+1,所以a=4,b=3,
b= 3+(++4) 此时a先计算自己到5,所以a=5,b=8
b=8+(5++)*2 此时先计算a*2=10+8,然后a+1,所以 a=6,b=18
b=18+6 ,此时a=b,b=24
b=24+(++6) 此时先把a+1,所以 a=7,b=31
求程序的输出结果 main() {int a,b; for(a=1,b=1;a<=10;a++) { if(b%3==1) {b+=3; continue;} b-=5;}}
最终 b=31.
循环开始,a 初值1,b 初值 1。
循环控制变量是 a,共循环 10 次。
第一次循环 b=1; b%3 得 1, if(b%3==1) 条件成立,做 b+=3, b 变 4 ,continue 则跳到下次循环开始,不执行 b-=5;
第二次循环 b=4; b%3 得 1,做 b+=3, b 变 7, continue 则跳到下次循环开始,
由于每次循环 b%3 == 1 条件都成立,所以 b 每次加3
循环 10 次, b 加3 共 10 次。
最终 b 为 1 + 3 * 10 得 31
以下程序的结果是( )。 int a=3,b=10; cout<>1);
13
int a=1; a=(a++)+(a++)+(a++);结果a=10;为啥? 换为b=(a++)+(a++)+(a++);b=3;又为啥?
未定义行为
详细的可查看CSDN C/C++论坛置顶帖或百度“C/C++ 语言中的表达式求值 裘宗燕”词条
int a=5,b;b=a++的结果以及b=--a的值
int a=5,b;
b=a++;
此时
b=5;
a=6;
原因:
b=a++;
相当于:
b=a;
a++;
++在变量后
先用值,再自增
int a=5,b;
b=--a;
此时
b=4;
b=4;
原因:
b=--a;
相当于
--a;
b=a;
--在前,所以先知减,再用自减后的值。
你只需要记住一点,++或者--在变量的前面,那就先把这个变量自增或者自减1,再使用这个改变后的值。在变量后面,就先用变量原值,再自增或者自减
int a=10, b;b=(a++)+a(++);输出a, b的结果?为什么?
b=(a++)+a(++);
应该是
b=(a++)+(a++);把?
a ==12 b==20 ,
b=(a++)+(a++) 等价于 b=a+a; a++;a++;
懂了吧? a++是先运算后++ 如果 改成 b=(++a)+(++a); 结果 b==24,a==12
设var a=2,b=3; 则a++==b?(a-1):b的结果是
a++==b?(a-1):b分解开为:
var result;var temp = a==b;a = a + 1;if(temp) { result = a - 1;}else{ result = b;}
所以,结果为3
结果是3
a++==b?(a-1):b 的意思是如果(a++)==b 那么返回a-1 否则返回b
此时a++要等到语句执行完后才会增一,因此(a++)==b 不成立,返回的应该是b的值
int a,b,x,y; a=5;b=5; x=(a++)+(a++)+(a++); y=(++b)+(++b)+(++b),输出的x=15,y=22.怎么解释啊?
a++ 叫后缀加加,后加加。在表达式里,先使用a的当前值5,
出了表达式,凡a要自增1的都要自增1。
所以 x=(a++)+(a++)+(a++);
分成:
x=a+a+a;
a=a+1;a=a+1;a=a+1;
得 x=15; 然后得 a=8;
========================
++b 是 前缀加加。在表达式里,b 要先增1,再使用。出了表达式,不再增1。
y=(++b)+(++b)+(++b);的计算要看编译器的处理方法
考虑编译优化,MS VC++ 6.0 优化选项 /O1 或 优化选项 /O2
处理成:
b=b+1;b=b+1;b=b+1; b变8
y=(++b)+(++b)+(++b) = b+b+b= 8+8+8 = 24.
优化选项 /Oa 或 /Od (不优化)
b=b+1; b1=6;
b=b+1; b=b+1; b2=8;
y = b1+b2+b2 = 6+8+8 = 22;
结果不同。
所以要避免y=(++b)+(++b)+(++b);这种多义性的写法。
=============
分页:
1
23