C/C++语法 - 用,而不是;分隔语句; 法律?

Ano*_*ous 7 c c++ syntax separator

我刚碰到这段代码:

delete a, a = 0;
Run Code Online (Sandbox Code Playgroud)

它编译并运行得很好.但这不应该是:

delete a;
a = 0;
Run Code Online (Sandbox Code Playgroud)

为什么分离语句使用,在这种情况下允许?

谢谢 :)

ibi*_*bid 7

在C和C++中,大多数"语句"实际上是表达式.添加到表达式中的分号使其成为一个语句.或者,允许(但几乎总是坏的样式)将副作用表达式与逗号运算符分开:左侧表达式的副作用被评估(并且其值被丢弃),右侧表达式被评估.评估其表达式的值.


Bjö*_*lex 6

这是逗号运算符.它评估它的两个参数并返回第二个参数.


Man*_*rse 5

这是逗号运算符.它可用于分隔表达式,但不能用于声明.


Boj*_*zec 5

那是逗号运算符.MSDN文章在这里.并看看这个问题,了解它是如何工作的.