c++ - 逗号运算符的局限性

标签 c++ c comma-operator

我已阅读 this问题,我想补充一点,使用逗号运算符无法完成的事情是什么。这让我很困惑,因为我可以这样做:

int arr[3];
arr[0]=1,arr[1]=2,arr[2]=3;

但是当我这样做的时候:

int arr[3],arr[0]=1,arr[1]=2,arr[2]=3;

它给我一个编译器错误。

我想问一下逗号运算符在实际应用中有什么局限性?

最佳答案

需要注意的是,并非 C 语言中所有逗号的使用都是逗号运算符的实例。将您的第二个示例更改为语法声明:

int a0=1,a1=2,a2=3;

逗号不是运算符,它们只是分隔列表中声明符实例所需的语法。

此外,参数/参数列表中使用的逗号不是逗号运算符。

在我看来,使用逗号运算符几乎总是一个坏主意——它只会造成不必要的混淆。在大多数情况下,使用逗号运算符完成的操作可以使用单独的语句更清楚地完成。

两个很容易想到的异常是在 for 语句的控制子句中,以及在绝对需要将多个“事物”塞进单个表达式中的宏中,甚至这应该只有在没有其他合理选择时才这样做)。

关于c++ - 逗号运算符的局限性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4547305/

相关文章:

c++ - 警告 : resolving Func by linking to Func@##

c++ - 在其他机器上运行 EXE 文件请求管理员权限

c - 在打包结构的末尾对齐

无法在linux gcc中加载dll

c++ - 用括号括起来的逗号分隔值列表在 C 中是什么意思? a = (1, 2, 3);

c++ - 为什么第二个变量在现场没有变化?

c++ - Caffe 删除 .cu 实现出现编译错误

c++ - 从文件中读取整数,中间有一个字符串

c++ - 使用正弦或余弦函数在 C/C++ 中实现 3D 烟花效果

c++ - 条件中的逗号运算符