慕粉3826426
2016-08-14 22:06
#include
main() { int a=0,b=0,c=0; c=(a-=++a),(a+=b,b+=4); printf("%d,%d,%d",a,b,c); } 为啥运行结果是0,4,0. 谁知道运算过程,求解答想学习的猪猪给你的正解。
前提是优先级:(百度。优先级C语言,算数运算符,算数表达式优先级)
a++意义是。(变量名)a中的值(自增一)。(自增一)就是(0+1).即 ( 1) int a=1;
-=为:赋值运算符。第一个运算表达式(a-=++a;) 即(a=a-a). 等号左边是(变量名)所以他就等于(a=1-1)
#include<stdio.h>
main()
{
int a=0,b=0,c=0;
a-=++a;
printf("%d\n",a);
c=a;
printf("%d\n",c);
a+=b;
printf("%d\n",a);
b+=4;
printf("%d\n",b);
printf("%d,%d,%d",a,b,c);
}
因为a-=++a中++符号优先级别比-=高所以在这个式子中的a都为++a所以结果就变成了a=++a- ++a最后变成括号中为0,所以c=0。至于b应该最简单,就是b=b+4所以b=4。
c=(a-=++a):看一下算法的优先级“++”先执行,即执行完后a=1;然后再执行“-=”,即a=a-1,所以执行完后a=0;即a=c=0;
a+=b:执行完后a=b=0;
b+=4:执行完后 a=0;b=4;c=0
C语言入门
926894 学习 · 21492 问题
相似问题