解释奇怪的c++编译和语法
Explain weird c++ compilation and syntax
有人可以解释为什么这段代码是有效语法吗?为什么会编译?
void foo(){}
enum class X { X1, X2 };
int main()
{
auto s = X::X1;
foo(),s = X::X2;
return 0;
}
使用 Apple LLVM 版本 9.0.0 (clang-900.0.38).
编辑:
一些程序员老兄提到的有问题的行
foo(),s = X::X2;
假设你的意思是
foo(),s = X::X2;
实际上等于
(foo()),(s = X::X2);
即调用foo
函数的表达式foo()
,表达式s = X::X2
除以comma operator.
有人可以解释为什么这段代码是有效语法吗?为什么会编译?
void foo(){}
enum class X { X1, X2 };
int main()
{
auto s = X::X1;
foo(),s = X::X2;
return 0;
}
使用 Apple LLVM 版本 9.0.0 (clang-900.0.38).
编辑:
一些程序员老兄提到的有问题的行
foo(),s = X::X2;
假设你的意思是
foo(),s = X::X2;
实际上等于
(foo()),(s = X::X2);
即调用foo
函数的表达式foo()
,表达式s = X::X2
除以comma operator.