1. 逗號表達式的一般形式
表達式1, 表達式2, ..., 表達式n
PS:
- 逗號運算符優(yōu)先級最低
- 逗號運算符的結(jié)合性從左至右
- 逗號表達式的值等于最后一個表達式的值
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int a, b, c;
a = (b=9,c=33);
printf("a=%d\n", a);
return 0;
}
=============================
a=33
real 0m0.010s
user 0m0.000s
sys 0m0.000s
請按 ENTER 或其它命令繼續(xù)
若有以下程序段:
int a = 0, b = 0, c = 0
c = (a -= a-5), (a = b, b+3);
printf("%d, %d, %d\n", a, b, c);
執(zhí)行后輸出的結(jié)果是( )
A. 3,0,-10
B. 0,0,5
C. -10,3,-10
D. 3,0,3答案:B 逗號運算符的優(yōu)先級比賦值運算符的優(yōu)先級低
- 第二條語句由逗號運算符連接兩個表達式組成,第一個表達式為
c=(a-=a-5),第二個表達式為(a=b,b+3)- 逗號運算符的結(jié)合順序為從左到右,先計算左邊的表達式
c=(a-=a-5)- 左邊表達式是一個賦值表達式,把表達式
(a-=a-5)的值賦給變量c,需要先計算表達式(a-=a-5)的值- 表達式
(a-=a-5)中-=的優(yōu)先級比-低,先計算-=右邊表達式的值,為0-5=-5,由此a-=a-5把變量a的值改變?yōu)?code>5,表達式(a-=a-5)的值也為5- 所以變量
c的值為5- 第二個表達式
(a=b,b+3)由也是一個逗號表達式,左側(cè)的賦值表達式把變量b的值賦給變量a,所以a = 0, b = 0,第二個表達式雖然有運算,但是運算結(jié)果沒有保存,所以對三個變量的值沒有影響- 所以,變量
a, b, c的值分別為0, 0, 5