什么是逗號(hào)運(yùn)算符十饥?
- 定義:c語(yǔ)言提供的一種特殊運(yùn)算符,用于連接兩個(gè)表達(dá)式
- 示例:
1+2,2+3
什么是逗號(hào)表達(dá)式?
- 定義:使用逗號(hào)運(yùn)算符連接的多個(gè)表達(dá)式即為逗號(hào)表達(dá)式
- 格式:表達(dá)式1,表達(dá)式2屎慢,表達(dá)式3
- 示例:結(jié)果為5
(1+2,2+3)
- 逗號(hào)表達(dá)式的值:整個(gè)逗號(hào)表達(dá)式的值為最右邊的表達(dá)式的值瞭稼,如示例中的表達(dá)式2:
2 + 3 = 5 - 逗號(hào)表達(dá)式的計(jì)算方法:
- 從左到右逐個(gè)計(jì)算
- 逗號(hào)表達(dá)式作為一個(gè)整體,它的值為最后一個(gè)表達(dá)式的值
- 逗號(hào)運(yùn)算符在所有運(yùn)算符的優(yōu)先級(jí)中最低
示例一:
a = 1*2,a*3;
容易產(chǎn)生的誤解為:"1 * 2,a * 3"為一個(gè)逗號(hào)表達(dá)式腻惠,原來(lái) a 的值為2环肘,a * 3后將6賦值給a,最終a的值為6
正確分析:逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低,所以應(yīng)該先進(jìn)行賦值運(yùn)算集灌,a = 1 * 2 = 2悔雹,然后進(jìn)行a * 3 = 6的運(yùn)算操作,也就是最終a的值為2欣喧,但是整個(gè)逗號(hào)表達(dá)式的結(jié)果為6
示例二:
#include<stdio.h>
void main()
{
int a;
printf("%d\n",(a=3*5,a*4,a+5));
結(jié)果為: 20
計(jì)算的過(guò)程為:對(duì)于逗號(hào)表達(dá)式腌零,從左往右進(jìn)行計(jì)算,賦值運(yùn)算a = 15,然后計(jì)算a * 4 = 60唆阿,再者計(jì)算a + 5 = 20益涧,20作為這個(gè)逗號(hào)表達(dá)式的最終結(jié)果打印出來(lái)
示例三:
a = (a=1,a*2);
b = a =1,a*3;
第一個(gè)表達(dá)式為一個(gè)賦值表達(dá)式,將逗號(hào)表達(dá)式的結(jié)果賦值給a酷鸦;第二個(gè)表達(dá)式為逗號(hào)表達(dá)式,包括一個(gè)賦值表達(dá)式和算數(shù)表達(dá)式牙咏,表達(dá)式的最終結(jié)果為3臼隔,b = 1
注意:
- 逗號(hào)并不是都是作為逗號(hào)運(yùn)算符,如:函數(shù)間的參數(shù)也是使用逗號(hào)作為分隔符
printf("%d,%d,%d\n",a,b,c); 結(jié)果為:a,b,c
printf("%d,%d,%d\n",(a,b,c),b,c); 結(jié)果為:c,b,c
- 使用逗號(hào)表達(dá)式的目的只是想分別得到各個(gè)表達(dá)式的值妄壶,而并非一定需要得到和使用整個(gè)逗號(hào)表達(dá)式的值摔握,逗號(hào)表達(dá)式最常用于for循環(huán)語(yǔ)句中
for(int i = 2, j = 4; i , j; i--, j--)
{
printf("%d,%d\n",i,j);
}
循環(huán)的終止條件為:j = 0