(++a) +=(a++)是怎么计算的?

初始a=4; (++a) +=(a++)结果是11
我不知道这个(++a) +=(a++)到底是怎么运行的
是先计算等式右边a++ 这样等式右测结果是4而a=5再加上左边的++a结果是10啊?
还是
先计算++a这样 a=5再见算a++这样 啊a=6 最后6+5=11?
到底是怎么回事啊?
这是华为的笔试题,而(++a)+=(++a)结果是12
我在visual c++6.0上运行的 不知道编译器是自左向右还是自右向左的,我想一般在windows上是自右向左吧

第1个回答  2006-12-18
如果等11的话,你的C编译器肯定是自右而左的,及一个表达式从等号最左边算起:
右边是(a++),a=4,a+1=5了,此时右边值为5;
然后再执行左边的(++a),此时a=5,a+1=6;
下来再执行+=的运算,及把左边当前的值6加上右边的值5,就是11赋于a,所以a=11了;
这种式子恐怕只在考试或课本上有了,真正写代码不会写这种难懂易错的了!
第2个回答  2006-12-18
a自加,变成5,5加上5是10,10再自加1变成11.
第3个回答  2007-01-01
解:
1)三个骰子,每个掷得技术与偶数的概率各为1/2,
三个均为偶数的概率为1/8(1/2的三次方)
两个偶数一个奇数概率为3/8(奇偶偶、偶奇偶、偶偶奇各1/8)
两个奇数一个偶数概率为3/8(同上推理)
三个奇数概率为1/8
前两种情况一定能被4整除,第四种一定不能,
分析第三种,三个数,出现4的概率为1/3所以第三种情况能被4除的可能性为3/8*1/3=1/8,
总概率1/8+3/8+1/8=5/8
2)三次均为A事件的概率为5/8*5/8*5/8
两A1非A概率3*(5/8*5/8*3/8)(道理与奇偶同)
要求的概率为:350/512=175/256
3)0次P(0-6)*(3/8)6 P(0-6)表示排列,6选0 括号外的数字都是成方的次数,下同
1次P(1-6)*(3/8)5(5/8)
2次P(2-6)*(3/8)4(5/8)2
3次P(3-6)*(3/8)3(5/8)3
4次P(4-6)*(3/8)2(5/8)4
5次P(5-6)*(3/8)(5/8)5
6次P(6-6)*(5/8)6本回答被提问者采纳
第4个回答  2006-12-19
这个?
不对呀?
第5个回答  2006-12-18
这个式子不是一个合法的C语句

(++a) +=(a++)是怎么计算的?
初始a=4; (++a) +=(a++)结果是11 我不知道这个(++a) +=(a++)到底是怎么运行的 是先计算等式右边a++ 这样等式右测结果是4而a=5再加上左边的++a结果是10啊?还是 先计算++a这样 a=5再见算a++这样 啊a=6 最后6+5=11?到底是怎么回事啊?解析:解:1)三个骰子,每个掷得技术与偶数...

(++a) +=(a++)是怎么计算的?
如果等11的话,你的C编译器肯定是自右而左的,及一个表达式从等号最左边算起:右边是(a++),a=4,a+1=5了,此时右边值为5;然后再执行左边的(++a),此时a=5,a+1=6;下来再执行+=的运算,及把左边当前的值6加上右边的值5,就是11赋于a,所以a=11了;这种式子恐怕只在考试或课本上有...

(++a)+=(a++)怎么计算啊?
int a=4; \/\/a == 4 ++a; \/\/a == 5 a+=a; \/\/a == 10 cout << a << endl;a++; \/\/a == 11 cout << a << endl;所以输出10和11.

int a=12;求(++a)+(a++)的值。求那位高手告诉求解过程
a++是"后自加",将a加1后,再求解表达式。c++中操作符优先级规定,自增操作符的优先级高于算术操作符(此处为+操作符),而后自增(例如a++)操作符又高于前自增操作符(例如++a,当然自减操作符同样遵循),如果有括号就先执行括号的表达式!于是:int a = 12;(++a) + (a++);\/*首先计算后...

int a=5,b;b=(++a)+(a++),怎么计算?
b=(++a)+(a++);一个++在变量前,一个是在变量后 所以 相当于三句:++a;b=a+a;a++;所以最后 b=a+a==6+6==12;\/\/因为a自增了一次后就用a的值,所以此时a的值是6 a==7;\/\/再自增一次,就从6变成7

为什么表达式 (a++) += (a++); 错误,而 (++a) += (a++); 正确
(a++)+=(a++)错而 (++a)+=(a++)正确 用直接了当的说法就是:+在前表示执行完当前语句后在让a+1 +在后表示在执行当前语句之前让a+1 也就是说 a+1之后会变成一个数值 对一个数值进行赋值是错误的 无意义的 只有对a 这样的变量本身赋值就是有意义的。永远记住 = 号左边是变量 ...

...B).a +=(++a) (C).(a++) += a; (D).(++a)+=(a++)解答过程,错误原因...
(A) 答案:9 a += (a++); (a++)是表达式结束后才进行+1,那么计算步骤为:(1)a+=a,此时左值右值a都是4,所以就是a=4+4=8;(2)表达式结束了(a++)生效,此时a=8,所以a+1=9;(B)答案:10 这个简单,计算步骤就是:(1)右值(++a)先算,1+a=5 (2)再计算a+=a...

inta=8;(a++)+=a为什么是错误的,(++a)+=(a++)是正确的还是错误的?求详...
(a++)+=a 是错的,因为先算括号里面的(完成a+=1),括号运算结束后,得到的是个值(a+1的值),数值本身不能再做 += 操作。(++a)+=(a++) 是可以的,(++a)括号运算结束后,得到的是变量a, 或以做 += 运算 顶1楼,3楼,自己写程序不要这样写,让读程序的人难受 ...

...+= a,++a += a++, 帮忙给出详细计算过程吧,谢谢O(∩_∩)O
++运算符优先等级在+=前面,先执行++再执行+=。++a+=a——第一个a自增1,再将自增1的第一个a和第二个a相加赋值给a。++a+=a++——第一个a自增1,再将自增1的第一个a和第二个a相加赋值给a,然后第二个a再自增1。

...希望详细展开式是什么, 还有(++a)+=(a++); 展开式是什么
回答:int a; a=4; input a; a=a++; 输出值为5 (++a)=a a+=a++

相似回答