2.4.7 逗号运算符和逗号表达式
C语言中,逗号可以作为运算符,也可以作为分隔符。
1)逗号作为运算符
逗号作为运算符时,是用它将两个表达式连接起来。例如:
49+52,61+83
称为逗号表达式,又称为“顺序求值运算符”。
逗号表达式的一般形式为
表达式1,表达式2
求解过程是:先求解表达式1,再求解表达式2。表达式2的值是整个逗号表达式的值。例如,逗号表达式
49+52,61+83
的值为144。又例如,逗号表达式
i=30*5,i*6
由于赋值运算符的优先级高于逗号运算符,其求解过程为:先求解i=30*5,经计算和赋值后得到i的值为150,然后求解i*6,得900。整个逗号表达式的值为900。
一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,例如:
(i=4*5,i*3),i+50
先计算出i的值等于20,再进行i*3的运算得60(但i值未变,仍为20),再进行i+50得70,即整个表达式的值为70。
逗号表达式的一般形式可以扩展为
表达式1,表达式2,表达式3,…,表达式n
逗号表达式的值为表达式n的值。
逗号运算符的优先级是所有运算符中级别最低的。下面两个表达式的作用是不同的:
①i=(j=30,5*30)
②i=j=30,5*i
式①是一个赋值表达式,将一个逗号表达式的值赋予i,i的值等于150;式②是逗号表达式,它包括一个赋值表达式和一个算术表达式,i和j的值都为30,整个表达式的值为150。
逗号表达式最常用于循环语句(for语句)中,详见第3章。
2)逗号作为分隔符
逗号是C语言中的标点符号之一,用来分隔开相应的多个数据。例如,在定义变量时,具有相同类型的多个变量可在同一行中定义,其间用逗号隔开:
int i, j,k;
另外,函数的参数也用逗号进行分隔,例如:
printf ("%d,%d,%d",a,b,c);
其中,a,b,c并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。有关函数的详细叙述见第6章。如果改写为
printf("%d,%d,%d",(a,b,c),b,c);
则a,b,c是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符,括弧中的内容是一个整体,作为printf函数的一个参数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。