#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("a=%d,b=%d\n",a,b); }分析这个程序?解释表达式:b=(++a)+(++a)+(++a);
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/29 10:38:07
xS]O`+
Hݔ%$ݘ%e"A6#(:>"n2_/촯s],^mھ=ss6<'cOJ<[6xb]P芠!)*DQYg+Br
0|s<|qbN
^a-GZ|C/bKzN~l:Ŷ~e75]ܻ/K
$#"vL6ʸEv[]+7hS:Eu3~LCd/&~B
hGa]tT.>!l
۪/h+[sqڀ]B"6 ̌T4?#;q>/YM¥/E
I4{B7H.TY&!A 됛Z=g3q\KQ@[9Bdz,IQWWvI\.hi-:VH49'$8F.K
0lUq6~hop2J+Bj=.yD?xLté79{k~}
22w
8H'vnTZFBVY98J*~
Pt
#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("a=%d,b=%d\n",a,b); }分析这个程序?解释表达式:b=(++a)+(++a)+(++a);
#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("a=%d,b=%d\n",a,b); }
分析这个程序?解释表达式:b=(++a)+(++a)+(++a);
#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("a=%d,b=%d\n",a,b); }分析这个程序?解释表达式:b=(++a)+(++a)+(++a);
整理后如下:
#include
main()
{
int a,b;
a=3,b=(++a)+(++a)+(++a);
printf("a=%d,b=%d\n",a,b);
}
主要是第二个表达式a=3,b=(++a)+(++a)+(++a);,它由一个逗号运算符将两个表达式分开,由于逗号运算符的性质(分别计算左右两边的表达式),所以它被解释为:首先计算逗号左边——a赋值为3,然后计算逗号右边——由于++与括号的优先级都高于+号,所以a被先自加3次变为6,b被赋值6+6+6等于18..
最后输出结果为a=6,b=18
=========
由于有括号,3个++a应该是同时算的. 我在visual studio 2010中粘贴提问者的代码运行结果为a=6,b=18 .如果有不同的结果,就不知道怎么回事了.