首页 理论教育C语言逗号运算符与表达式详解

C语言逗号运算符与表达式详解

【摘要】:用逗号运算符可以将两个及两个以上表达式连接起来,所形成的就是逗号表达式。其一般形式为:如:逗号表达式的求值过程是:自左向右,先求表达式1 的值,再求表达式2 的值,…需要注意的是,并不是任何地方出现的逗号都作为逗号运算符。进一步的表达式中只剩下了逗号运算符和赋值运算符,赋值运算的优先级高于逗号运算符,括号内逗号表达式的结果为5,再将5 赋值给变量i,最后变量i 的值为5。

C 语言提供了一种特殊的运算符——逗号运算符“,”。用逗号运算符可以将两个及两个以上表达式连接起来,所形成的就是逗号表达式。其一般形式为:

如:

逗号表达式的求值过程是:自左向右,先求表达式1 的值,再求表达式2 的值,…,最后求表达式n 的值。整个表达式的值就是表达式n 的值。如上面的表达式,先求5-3 的值为2,再求6+5 的值为11,最后求7-4 的值为3。整个逗号表达式的值为3。

需要注意的是,并不是任何地方出现的逗号都作为逗号运算符。例如,函数参数也是用逗号来间隔的。如输出函数语句:

其中的“a,b,c”并不是一个逗号表达式,它是printf 函数的三个参数,参数间用逗号间隔。若将上述语句改为:(www.chuimin.cn)

则“(a,b,c)”是一个逗号表达式,它的值等于c 的值。括号内作为一个表达式,括号内的逗号不是参数间的分隔符,而是逗号运算符。

【例2.7】已知int i,a;,执行语句i=(a=3*9,a/5),a+11;后,变量i 的值为( )。

分析:

给变量i 赋值的表达式中,有逗号运算符、算术运算符。根据运算符的运算规则,先算算术运算,表达式即可变为:i=(a=27,5),38;,变量a 的值为27,a/5 为27 除5 取整,即为5,a+11为38。进一步的表达式中只剩下了逗号运算符和赋值运算符,赋值运算的优先级高于逗号运算符,括号内逗号表达式的结果为5,再将5 赋值给变量i,最后变量i 的值为5。