【发布时间】:2013-07-28 00:01:07
【问题描述】:
我看到了这段代码:
if (cond) {
perror("an error occurred"), exit(1);
}
你为什么要这样做?为什么不只是:
if (cond) {
perror("an error occurred");
exit(1);
}
【问题讨论】:
-
逗号运算符在表达式 SFINAE 之外无用。
-
逗号运算符有时在您希望将多个操作组合成单个语句的宏的主体等上下文中很有用。否则,在循环中增加两个变量或在其他一些风格化的地方增加两个变量时会很有用。但是,一般来说,这是应该避免的;分号比逗号好。另请参阅Comma operator precedence while used with
?:operator 等问题,了解逗号运算符引起的混淆示例。 -
@JonathanLeffler
,我们也经常在 for 循环中使用 -
我以为我在循环中用“在循环中增加两个变量时”覆盖了逗号;我没有特别提到在循环中初始化两个变量,但我希望这被隐含地涵盖(而且我没有在评论中留下那么多空间)。我注意到一个不起作用的用法是
if (check_for_error()) print_error("bust"), return -1;——这很遗憾,但标准拒绝它是完全合乎情理的(return不会向它写入的函数返回值,不像调用功能等)
标签: c++ c coding-style comma-operator