关于c语言,请教
01#include<stdio.h>02voidmain()03{04inta,b,s;05a=5;b=5;06s=a+b;07printf("%d,%d,%d\n",...
01 #include <stdio.h>
02 void main()
03 {
04 int a,b,s;
05 a=5;b=5;
06 s=a+b;
07 printf("%d,%d,%d\n",a,b,s);
08 s=a+++a+++a++;
09 printf("%d,%d\n",a,s);
10 s=++a+b;
11 printf("%d,%d,%d\n",a,b,s);
12 s=--a+b;
13 printf("%d,%d,%d\n",a,b,s);
14 s=a--+b;
15 printf("%d,%d,%d\n",a,b,s);
16 s=-a+++-b;
17 printf("%d,%d,%d\n",a,b,s);
}
程序中第8行,书上说应该理解为a后缀自加进行3次,得到a的值为8,整个表达式的值为a自加前的值相加,也就是三个5相加,第7行输出的s为15,但我觉得第8行应该这样理解,s=(a++)+(a++)+(a++);第一个括号过后,a的值为6但第一个括号的值为5,第二个括号过后,a的值为7但第二个括号的值为6 ,第三个括号过后,a的值为8但是第三个括号的值为7,所以s的值为5+6+7,应该为18,怎么会是三个5相加呢,请教高手,谢谢了,我是新手,没有什么财富悬赏之类的,原谅了 展开
02 void main()
03 {
04 int a,b,s;
05 a=5;b=5;
06 s=a+b;
07 printf("%d,%d,%d\n",a,b,s);
08 s=a+++a+++a++;
09 printf("%d,%d\n",a,s);
10 s=++a+b;
11 printf("%d,%d,%d\n",a,b,s);
12 s=--a+b;
13 printf("%d,%d,%d\n",a,b,s);
14 s=a--+b;
15 printf("%d,%d,%d\n",a,b,s);
16 s=-a+++-b;
17 printf("%d,%d,%d\n",a,b,s);
}
程序中第8行,书上说应该理解为a后缀自加进行3次,得到a的值为8,整个表达式的值为a自加前的值相加,也就是三个5相加,第7行输出的s为15,但我觉得第8行应该这样理解,s=(a++)+(a++)+(a++);第一个括号过后,a的值为6但第一个括号的值为5,第二个括号过后,a的值为7但第二个括号的值为6 ,第三个括号过后,a的值为8但是第三个括号的值为7,所以s的值为5+6+7,应该为18,怎么会是三个5相加呢,请教高手,谢谢了,我是新手,没有什么财富悬赏之类的,原谅了 展开
6个回答
展开全部
这条语句是在你执行完加的运算之后,a才自加3次,就是说,s=(a++)+(a++)+(a++)你这样理解是没错的,不过应该是这样,s=a+a+a; a++; a++; a++;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里你可能漏掉了一点,后缀的自加是该条语句完成后再自加,你所写的第八条语句还没完成所以不能本身就自加,你可以在第八条语句完成后自加,即第八条语句完成后a=8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-09
展开全部
自加运算符的优先级在+之后,也就是说先运算的是s=a+a+a,然后运算三次a++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询