📅  最后修改于: 2023-12-03 15:37:35.230000             🧑  作者: Mango
逗号运算符是C语言和C++语言中的一个二元运算符,它用逗号隔开两个表达式,它的结果是最后一个表达式的值。
逗号运算符的一般形式为:expr1, expr2
其中,expr1
是任意合法的表达式,expr2
也是任意合法的表达式,将会按照从左到右的顺序依次计算并返回expr2
的值。
逗号运算符的运算优先级是最低的,低于赋值(assignment)运算符。
C和C++中的逗号运算符的结果是右操作数的值,并且这个结果是L值,也就是可以被赋值。
下面是一个例子:
#include <stdio.h>
int main() {
int a = 1, b = 2;
int c = (a++, b++);
printf("a = %d, b = %d, c = %d\n", a, b, c); //输出 a = 2, b = 3, c = 2
return 0;
}
在这个例子中,(a++, b++)
中的逗号运算符的结果为b++
的值(也就是2),最后将这个结果赋值给了变量c
。
逗号运算符通常用于以下场景:
for
循环条件中,用于表达两个条件的“与”关系。#include <stdio.h>
int main() {
for (int i = 0, j = 0; i < 3 && j < 2; i++, j++) {
printf("i = %d, j = %d\n", i, j);
}
return 0;
}
#include <stdio.h>
int main() {
int a, b, c;
a = b = (c = 3, c+2); //等价于 c = 3; b = c+2; a = b;
printf("%d %d %d\n", a, b, c); //输出 5 5 3
return 0;
}
#include <stdio.h>
int f(int a, int b, int c) {
printf("%d %d %d\n", a, b, c);
return a + b + c;
}
int main() {
int sum = f(1, (2, 3), 4);
printf("%d\n", sum); //输出 1 3 4
return 0;
}
C和C++中的逗号运算符的结果为右操作数的值,并且这个结果是L值,也就是可以被赋值。逗号运算符常用于表达多个表达式中的关系以及在一次赋值表达式中同时赋值多个变量。