1. 逗號(hào)表達(dá)式的一般形式
表達(dá)式1, 表達(dá)式2, ..., 表達(dá)式n
PS:
- 逗號(hào)運(yùn)算符優(yōu)先級(jí)最低
- 逗號(hào)運(yùn)算符的結(jié)合性從左至右
- 逗號(hào)表達(dá)式的值等于最后一個(gè)表達(dá)式的值
#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
請(qǐng)按 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 逗號(hào)運(yùn)算符的優(yōu)先級(jí)比賦值運(yùn)算符的優(yōu)先級(jí)低
- 第二條語(yǔ)句由逗號(hào)運(yùn)算符連接兩個(gè)表達(dá)式組成,第一個(gè)表達(dá)式為
c=(a-=a-5),第二個(gè)表達(dá)式為(a=b,b+3)- 逗號(hào)運(yùn)算符的結(jié)合順序?yàn)閺淖蟮接?,先?jì)算左邊的表達(dá)式
c=(a-=a-5)- 左邊表達(dá)式是一個(gè)賦值表達(dá)式,把表達(dá)式
(a-=a-5)的值賦給變量c,需要先計(jì)算表達(dá)式(a-=a-5)的值- 表達(dá)式
(a-=a-5)中-=的優(yōu)先級(jí)比-低,先計(jì)算-=右邊表達(dá)式的值,為0-5=-5,由此a-=a-5把變量a的值改變?yōu)?code>5,表達(dá)式(a-=a-5)的值也為5- 所以變量
c的值為5- 第二個(gè)表達(dá)式
(a=b,b+3)由也是一個(gè)逗號(hào)表達(dá)式,左側(cè)的賦值表達(dá)式把變量b的值賦給變量a,所以a = 0, b = 0,第二個(gè)表達(dá)式雖然有運(yùn)算,但是運(yùn)算結(jié)果沒(méi)有保存,所以對(duì)三個(gè)變量的值沒(méi)有影響- 所以,變量
a, b, c的值分別為0, 0, 5