作者:解学武
C语言逗号运算符用法详解
在 C 语言程序中,当需要使用多个相同类型的变量时,可以连续定义它们,比如:
逗号表达式的计算规则很简单:先执行
举个简单的例子:
注意,逗号表达式必须要用小括号
再来看一个复杂点的例子:
举个例子:
1) 逗号运算符要和普通逗号区分开,例如:
逗号运算符的使用场景有很多,比如:
读完本文,恭喜你已经掌握了逗号运算符的精髓,继续往下学习吧!
声明:当前文章为本站“玩转C语言和数据结构”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
int a, b, c; float m = 10.9, n = 20.56; char p, q = '@';可以看到,变量之间用逗号做了分隔,这是逗号的一种用法。本节将带领大家学习逗号的另一种用法,叫做逗号运算符。
逗号运算符是什么
在 C语言中,允许逗号在表达式里使用,它的使用格式如下:表达式1, 表达式2
逗号出现在两个表达式中间,这时的逗号就变身成了一个特殊的运算符,叫做逗号运算符;表达式1, 表达式2
这个整体也是一个表达式,叫做逗号表达式。逗号表达式的计算规则很简单:先执行
表达式1
,然后执行表达式2
,最后将表达式2的值
作为整个逗号表达式的值。
[步骤1] 执行表达式1 → [步骤2] 执行表达式2 → [结果] 取表达式2的值
举个简单的例子:
int a = 0; int result = (a = 3, a + 2); // 这里的逗号是运算符
a = 3, a + 2
是一个逗号表达式,它的计算过程是:
-
先执行
a = 3
,此时变量 a 的值从 0 变成了 3; -
再执行
a + 2
,由于 a 的值是 3,所以 a + 2 的结果是 5。
a = 3, a + 2
的最终结果是 5,变量 result 的值也就是 5。注意,逗号表达式必须要用小括号
( )
包裹起来。如果写成int result = a = 3, a + 2;
,编译器将无法分辨出逗号运算符,它会把result = a = 3
和a + 2
分别视为一个整体,int result = a = 3
语法上是没问题的,但int a + 2
会造成语法错误。 再来看一个复杂点的例子:
int x = 5; // 逗号运算符连接两个表达式 int result = (x += 3, x * 2);计算逗号表达式
(x += 3, x * 2)
的值:
-
先执行
x += 3
,x 的值变成 8; -
再执行
x * 2
(8*2=16),它的结果是 16。
多个逗号运算符连用
多个逗号运算符可以一起使用,使用格式如下:表达式1, 表达式2,表达式3, 表达式4...
整个逗号表达式的计算规则是:从左往右依次执行每个表达式,将最后一个表达式的值作为整个逗号表达式的值。举个例子:
int a = 10; int b = (a -= 5, a *= 2, a + 100);其中逗号表达式
(a -= 5, a *= 2, a + 100)
的结果为:
-
计算
a -= 5
,即 10 - 5 = 5; -
再计算
a *= 2
,即 5 * 2 = 10; -
再计算
a + 100
,即 10 + 100 = 110。
嵌套逗号表达式
所谓逗号表达式的嵌套,指的是在逗号表达式里包含另一个逗号表达式,比如:int x = 5; // 嵌套逗号表达式 int y = (x += 3, (x *= 2, x -= 1), x + 10);整个逗号表达式的计算过程是:
-
先执行
x += 3
,也就是 x = 5 + 3 = 8; -
进入嵌套逗号表达式:
-
执行
x *= 2
,即 x = 8 * 2 = 16; -
再执行
x -= 1
,即 x = 16 - 1 = 15;
-
执行
-
执行
x + 10
,即 15 + 10 = 25。
总结
逗号运算符的使用注意事项有两个,分别是:1) 逗号运算符要和普通逗号区分开,例如:
printf("%d", (1, 2)); // 输出2(使用逗号运算符) printf("%d, %d", 1, 2); // 输出1, 2(普通参数分隔)2) 逗号表达式要用小括号
( )
包裹,否则极易导致表达式出现歧义:
int x = 5, 10; // 错误!会被解析为定义变量的语句 int y = (5, 10); // 正确,y=10
逗号运算符的使用场景有很多,比如:
- 需要在一个表达式里执行多个操作的时候;
- 简化简单的连续赋值操作;
- for 循环控制语句(待你学到循环时会更有用);
- 配合宏定义使用(未来学习预处理时会接触到);
读完本文,恭喜你已经掌握了逗号运算符的精髓,继续往下学习吧!
声明:当前文章为本站“玩转C语言和数据结构”官方原创,由国家机构和地方版权局所签发的权威证书所保护。