Adv*_*sus 10 c++ string comma parentheses
可能重复:
C++逗号运算符
我今天遇到了意外(至少对我来说)C++行为,由以下snippit显示:
#include <iostream>
int main()
{
std::cout << ("1", "2") << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
2
Run Code Online (Sandbox Code Playgroud)
这适用于括号之间的任意数量的字符串.在visual studio 2010编译器和键盘上测试.
我想知道为什么这首先编译,这个'功能'的用途是什么?
它被称为逗号运算符:在表达式中x, y,编译器首先评估x(包括所有副作用),然后y; 表达式的结果是结果y.
在你引用的表达中,它绝对没用; 简单地忽略第一个字符串.但是,如果第一个表达式有副作用,那么它可能很有用.(在我看来,主要用于混淆,最好避免使用.)
另请注意,这仅在逗号为运算符时有效.如果它可以是任何其他东西(例如,分隔函数的参数的标点符号),它就是.所以:
f( 1, 2 ); // Call f with two arguments, 1 and 2
f( (1, 2) ); // Call f with one argument, 2
Run Code Online (Sandbox Code Playgroud)
(见.我告诉过你,混淆是好事.)