Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c+中的逗号运算符和逗号分隔符+;_C++_Comma Operator - Fatal编程技术网

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

C++ c+中的逗号运算符和逗号分隔符+;,c++,comma-operator,C++,Comma Operator,可能重复: 逗号(,)何时起运算符作用,何时起分隔符作用?其后果是什么。如果可能,请同时给出两者的小示例。逗号在函数调用、函数声明、初始值设定项和变量声明中起分隔符作用: f(a, b); int a[] = {2, 3, 4}; int c = 2, d = 3; 相反,当用于分隔语句时,它的行为类似于逗号运算符: a = 2, b = 3; c = (doSomething(), doSomethingElse(), result()); 它产生的结果是最右边的操作数的值,执行顺序保证

可能重复:


逗号(,)何时起运算符作用,何时起分隔符作用?其后果是什么。如果可能,请同时给出两者的小示例。

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

f(a, b);
int a[] = {2, 3, 4};
int c = 2, d = 3;
相反,当用于分隔语句时,它的行为类似于逗号运算符:

a = 2, b = 3;
c = (doSomething(), doSomethingElse(), result());
它产生的结果是最右边的操作数的值,执行顺序保证从左到右,与函数参数的未定义求值顺序相反。

逗号作为
运算符

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

例如:

/int i = (5, 10);  /* 10 is assigned to i*/
逗号运算符的主要用途是在以下情况下产生副作用:

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

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

例如:

int a = 1, 
b = 2; 
void fun(x, y);
另一个例子:

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

基本上,它在任何需要表达式的地方(与表达式列表相反)都充当运算符。

可能的重复:;不仅如此,还有其他情况:
inta=2,b=3不同于
a=2,b=3,例如。仍然。。。这份清单涵盖了一些,但不是全部。即使所说的一切都是正确的,我也不能向上投票,因为它把事情放在一边,首先,在@Als-answer中显示了一些案例(为什么没有得到向上投票?)