#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("a=%d,b=%d\n",a,b); }分析这个程序?解释表达式:b=(++a)+(++a)+(++a);

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 18:40:53
#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf(
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-:VH 49'$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 .如果有不同的结果,就不知道怎么回事了.