程序没问题的!问结果为什么是-12?
...main() { int a=3; a+=a-=a*a; printf("%d\\n",a); } 为什么结果为...
+=,-=为右结合,*的优先级最高 所以先运行*运算,然后再运行-=运算,a += (a -= (a*a))也就是 a = a - (a*a); 此时a的值变为了-6;再运行 a += a; 即 a = a+a; 结果就为-12啦
...main() {int a=12; a+=a-=a*a; printf("a=%d\\n",a); }
再执行a+=a,即a=a+a=(-132)+(-132)=-264 输出a的值,输出a=-264
...{ int a=3; a+=a-=a*a=a; printf("%d",a); } 运行过不了,怎么回事...
具体是在a*a=a这里出错了 原因分析:整个表达式是由右向左解释的,这是由赋值运算符的特性确定的。所以表达式等价于:a+=( a-= ( a*a=a ) );而a*a是一个右值,而非左值(就是说这个表达式只能放在等号右边,而不能放在左边)所以出现错误,无法通过编译 ...
#include<stdio.h> void main() { int a=3; a+=(a<1)? a:1; printf...
很明显,当对条件 a < 1 进行判断时,因为a = 3 因此判断结果为false ,将执行 :号后面的表达式---也就是1---也就是a += 1, 因为a =3 因此 a += 1 的最终结果为4 。 明白了吗? :)
C语言问题: #include <stdio.h> int main() { int a=3,
a+=b,代表给a赋值为(a+b),-=同理,同时这俩运算符平级。所以顺序为首先a+=a,此时a=2a;然后a-=a,此时=0;然后c=a=0
设有int a=3,a+=a-=a*a的值是,要详细过程 谢谢
a-=a*a相当于 a=a-(a*a)=-6a+=-6相当于 a=a-6=-6-6=-12所以最后结果是-12这个题是从后面倒着算回来,每一步算出来值都赋给后一项的计算。详情可见C语言的赋值表达式 本回答由提问者推荐 举报| 评论 32 3 coolzhixu123 采纳率:67% 来自:芝麻团 擅长: 数学 考研 高考 环境学 ...
main() { int a=3; printf("%d\\n",(a+a-=a*a)); }
这是非法的:a+a这个表达式不能做左值,应该为:printf("%d\\n",(a+(a-=a*a)));
#include<stdio.h> int main() { int a=023; printf("%d\\n",--a...
以0开头的数值是8进制数值 023 (8进制) = 19 (10进制)
int(a)=3; a的值是多少?
a=-12。赋值语句,从右到左依次运行:那么:int a=3;a+=a-=a*a;相当于:1.a-=a*a;2.a+=a;相当于:1.a=a-a*a;2.a=a+a;由于a初始化为3:1.a=a-a*a=3-3*3=-6;2.a=a+a=-6+(-6)==-12;
#include<stdio.h> main() {int a=9; a+=a-=a+a; printf("%d\\n",a...
int a=9;\/\/定义一个整形类型的树a=9;a+=a-=a+a; \/\/从右往左看,相当于a=a-(a+a)=-9和a=a+a=-18 printf("%d\\n",a); \/\/即最后为-18 还有。。。注意main函数的返回类型