C语言的问题,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/03 11:40:51
说赋值表达式是右结合的,那为么在做(a=3*5)=4*3时,先要做a=3*5呢,不是要先做4*3吗,还是说(a=3*5)有括号,即使是右结合也要先做括号里的,在按右结合做是吗,谢谢

你去随便找一本C语言的书,面附录有优先级和结合方向的问题,好好看一下哦!
对于你的题:
首先应看优先级,括号优先级高,先运算括号里面的!
在再看结合方向,把 = 两边看成一个整体 !
先把3*5赋给a ,再把4*3赋给a
所以结果是a等于12
希望能帮到你!

先做括号里的,括号优先级比等号的高。

即使是右结合也要先做括号里的,再按右结合做
所以(a=3*5)=4*3,先做a=3*5,然后再做a=4*3,最后a的值为12

给你一个代码验证:
#include<conio.h>
#include<stdio.h>

void main()
{
int a;
(a=3*5)=4*3;

printf("%d",a);

getch();
}

输出为:12