C语言赋值运算符的结合方向是自右向左吗?书上写的自右向左。可是下面这段代码输出为0,a-=a*=a;结合方向如果自右向左,a的值应该是-132。我用的是vs2010旗舰版。知道的朋友帮帮忙。
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{int a;
a=12;
a-=a*=a;
printf("%d",a);
system("pause");
}
èµå¼è¿ç®ç¬¦æ¯èªå³åå·¦ç»åçã
以å¦ä¸ä»£ç 为ä¾ï¼
int a = 1,b=2,c=3;
a=b=c;
printf("%d,%d,%d\n", a,b,c);
å¦æèµå¼è¿ç®ä¸ºèªå·¦åå³ï¼é£ä¹æ§è¡é¡ºåºä¸º
a = b = 2;
b = c = 3;
ç»æa = 2, b=3, c = 3ã
å°è¾åº2,3,3
å¦æèµå¼è¿ç®ä¸ºèªå³åå·¦ï¼é£ä¹æ§è¡é¡ºåºä¸º
b = c = 3;
a = b = 3;
ç»æa = 3, b=3, c = 3ã
å°è¾åº3,3,3
éè¿å®é è¿è¡ï¼ç»æ为3,3,3ã说æç»åæ¹åæ¯èªå³åå·¦çã
以å¦ä¸ä»£ç 为ä¾ï¼
int a = 1,b=2,c=3;
a=b=c;
printf("%d,%d,%d\n", a,b,c);
å¦æèµå¼è¿ç®ä¸ºèªå·¦åå³ï¼é£ä¹æ§è¡é¡ºåºä¸º
a = b = 2;
b = c = 3;
ç»æa = 2, b=3, c = 3ã
å°è¾åº2,3,3
å¦æèµå¼è¿ç®ä¸ºèªå³åå·¦ï¼é£ä¹æ§è¡é¡ºåºä¸º
b = c = 3;
a = b = 3;
ç»æa = 3, b=3, c = 3ã
å°è¾åº3,3,3
éè¿å®é è¿è¡ï¼ç»æ为3,3,3ã说æç»åæ¹åæ¯èªå³åå·¦çã
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-05-19
你看你的运算表达式:a-=a*=a;
先看第一步:
a*=a 根据你的表示方式那么这么计算就是a=a*a; 那么结果就是144
第二步
a-=a;
这个时候a的值就是144,这个144就是第一个步骤的结果,那么这样一来
a-=a;就相当于a=a-a; 那么输出的结果就是0 了
先看第一步:
a*=a 根据你的表示方式那么这么计算就是a=a*a; 那么结果就是144
第二步
a-=a;
这个时候a的值就是144,这个144就是第一个步骤的结果,那么这样一来
a-=a;就相当于a=a-a; 那么输出的结果就是0 了
第2个回答 2012-05-19
是的,先执行a*=a,此时 a=144,在执行a-=a; a=0本回答被提问者采纳
第3个回答 2012-05-19
不img却