#include<stdio.h> main() { int a=5,c; c=(a+=a++); printf("%d,%d\n",c,a); } 输出结果为 10,11. 为啥?

如题所述

关键在于这一语句的理解
c=(a+=a++);
1、先看右边括号中的 a+=a++,对于它,再看等号右边,右边 a 先执行运算,再加1,所以先执行a+=a; 得到a=10,将a的值赋于c
2、再执行a++,10加1就得到了11
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-21
a++的理解:先干别人让它干得事,再自加1;
++a的理解:先自加1,再干别人让它干得事;
这里:a+=a++等效于a=a+a++;这里a++中a要干得事就是和等号右边第一个a相加,得a=10再赋给c,则c=10;干完活之后a自加1啦,所以输出之后a、c的值分别为11和10。
例题:
#include<stdio.h> #include<stdio.h>
main() main()
{ {
int i=4; int i=4;
printf("%d",i++); printf("%d",++i)
}
结果为4; 结果为5;
本人解析:别人要i干得事是输出i
第2个回答  2012-05-20
其实我感觉有点不对。
a++优先级高于a+=,但a++仍等于5,a=6.所以a+=a++相当于a=(6+5)=11,所以c也=11.
第3个回答  2012-05-20
因为a++,使得a=a+(a++),结果加了1

#include<stdio.h> main() { int a=5,c; c=(a+=a++); printf("%d,%d\\...
1、先看右边括号中的 a+=a++,对于它,再看等号右边,右边 a 先执行运算,再加1,所以先执行a+=a; 得到a=10,将a的值赋于c 2、再执行a++,10加1就得到了11

#include<stdio.h> int main(void) { int a=0; while(a++<5){ printf...
a++=1a++=2a++=3a++=4a++=5 while循环,如果a<5,则a自加1,然后输出a++=a的值,直到a>=5退出循环 a=1<5,a+1=1,输出a++=1 a=1<5,a+1=2,输出a++=2 a=2<5,a+1=3,输出a++=3 a=3<5,a+1=4,输出a++=4 a=4<5,a+1=5,输出a++=5 5=5,a+1=6,但是...

int a=5,a++=
include <cstdio> int main(){ int a=5; printf("%d\\n",a++); }答案是5

#include <stdio.h> main( ) { int a=2,c=5; printf("a=%d,b=%d \\n...
printf("a=%d,b=%d \\n",a,c);来说,d表示格式化输出,其中d表示按int类型输出,输出的变量就是后面的a和c。所以,最后的结果中是不包含%号的。选B才是对的。

#include<stdio.h> void main() { int c=5; printf("%d,%d,%d\\n",c...
VC中printf的声明是int _cdecl printf (const char *format, ...)_cdecl声明printf参数入栈方式是从右向左入栈 VC6在处理时也是按照从右向左的顺序计算三个表达式的,所以结果就是 ++c为6 c+8为14 c+=c++为12 VC6生成的汇编是 mov dword ptr [ebp-4],5 mov eax,dword ptr [ebp...

为什么程#include<stdio.h> main() { int a; while(a=5) printf("%d...
while(a=5)\/\/先给a赋值,然后判断a是否等于0,此时a=5,所以a肯定不等于0,此处便成为恒等式了 你应该是把while(a==5)写成了while(a=5)了

#include<stdio.h> main() { int a=5,b=4,c=3,d; d=(a>b>c); printf...
0 关键是a>b>c,你应该看成(a>b)>c,先计算a>b,结果是真实的,也就是1,接着计算1>c,结果是false,也就是0,所以d=0,这是考察编程中的运算符,蛮基础的~~

#include<stdio.h> main(void) { int a = 5,b; b=(++a)+(++a)(++a...
main(void)错了,应为int main(void)或者void main(void)括号里的void可有可无;b=(++a)+(++a)(++a); 这条语句也错了,(++a)(++a)中间应该有个乘号,乘号是不能省略的

#include <stdio.h> int main(void) { int a = 5; printf("size = %...
你把%d改为%ld或%lu试试,这个是sizeof(a)是个无符号长整型数值。

#include<stdio.h> main() { int a[5],i ; int *p=a,t; for(i=0;i<...
include<stdio.h> void main(){ int a[5],i,max;for(i=0;i<5;i++)scanf("%d",&a[i]);for(i=1,max=a[0];i<5;i++)if(max<a[i])max=a[i];for(i=0;i<5;i++)printf("a[%d]=%d\/n",i,a[i]);printf("The largest number is %d\/n",max);} ...

相似回答
大家正在搜