c++中的逗号运算符和逗号分隔符



可能重复:
什么时候逗号运算符都不充当逗号运算符?

逗号(,)什么时候充当运算符,什么时候充当分隔符?它的后果是什么?如果可能的话,请同时举两个小例子。

逗号在函数调用、函数声明、初始值设定项和变量声明中充当分隔符:

f(a, b);
int a[] = {2, 3, 4};
int c = 2, d = 3;

相比之下,当用于分隔语句时,它的行为就像逗号运算符:

a = 2, b = 3;
c = (doSomething(), doSomethingElse(), result());

它产生的结果是其最右边操作数的值,执行顺序保证从左到右,与函数参数的未定义求值顺序相反。

逗号为Operator

逗号运算符(由标记表示)是一个二进制运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数,并返回此值(和类型)。逗号运算符的优先级是所有C运算符中最低的,并且充当序列点。

示例:

/int i = (5, 10);  /* 10 is assigned to i*/

逗号运算符的主要用途是在以下情况下产生副作用:

  • 调用函数
  • 进入或重复迭代循环
  • 测试条件
  • 需要副作用但不立即需要表达式结果的其他情况

逗号为Separator

逗号在与函数调用和定义、类似函数的宏、变量声明、枚举声明和类似构造一起使用时充当分隔符。

示例:

int a = 1, 
b = 2; 
void fun(x, y);

另一个例子:

void fun(f1(), f2()); 

基本上,它在任何需要表达式的地方都表现为运算符(而不是表达式列表)。

相关内容

  • 没有找到相关文章

最新更新