C++语法问题-为什么我不能用逗号分隔不同类型的变量定义
C++ syntax question - Why can't I use comma to separate variable definition of different types
int main() {
std::cout << 1, std::cout << 2;
return 0;
}
上面的代码片段在语法上是正确的,因为逗号可以用来分隔语句。然而,
int main() {
int a, std::string b;
return 0;
}
这个returns有错误
Expected initializer before 'b'
这是为什么?在某些情况下我不能使用逗号来分隔语句吗?例如在这种情况下定义变量?
逗号 从不 分隔语句。您的第一个示例是单个语句,由包含 comma operator 的表达式组成。它恰好和你写了两个语句一样做了同样的事情 std::cout << 1; std::cout << 2;
但它们在语法上并不等价。
同样,您的第二个示例是(试图成为)单个声明语句,它在语法上不是有效的。可以使用逗号(不是逗号运算符)来分隔两个相同类型的声明 int a, b;
,但有一些变体,例如 int a, *b;
,但这仍然是一个声明语句。
int main() {
std::cout << 1, std::cout << 2;
return 0;
}
上面的代码片段在语法上是正确的,因为逗号可以用来分隔语句。然而,
int main() {
int a, std::string b;
return 0;
}
这个returns有错误
Expected initializer before 'b'
这是为什么?在某些情况下我不能使用逗号来分隔语句吗?例如在这种情况下定义变量?
逗号 从不 分隔语句。您的第一个示例是单个语句,由包含 comma operator 的表达式组成。它恰好和你写了两个语句一样做了同样的事情 std::cout << 1; std::cout << 2;
但它们在语法上并不等价。
同样,您的第二个示例是(试图成为)单个声明语句,它在语法上不是有效的。可以使用逗号(不是逗号运算符)来分隔两个相同类型的声明 int a, b;
,但有一些变体,例如 int a, *b;
,但这仍然是一个声明语句。