括号之间的两个字符串,在C++中用逗号分隔
Two strings between brackets separated by a comma in C++
我今天遇到了意想不到的(至少对我来说)C++行为,由以下截图显示:
#include <iostream>
int main()
{
std::cout << ("1", "2") << std::endl;
return 0;
}
输出:
2
这适用于括号之间的任意数量的字符串。在Visual Studio 2010编译器和代码板上进行了测试。
我想知道为什么首先编译,这个"功能"有什么用?
啊,这是逗号运算符。当您使用逗号和两个(或更多)表达式时,发生的情况是执行所有表达式,并且整个结果是最后一个表达式的结果。这就是为什么你会因此得到"2"。有关更大的解释,请参阅此处。
它
被称为逗号运算符:在表达式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
(见。 我告诉过你这对混淆有好处。
逗
号运算符 ( , ) 逗号运算符 (,) 用于分隔包含的两个或多个表达式,其中只有一个表达式。当必须为值计算表达式集时,仅考虑最右侧的表达式。
例如,以下代码:
a = (b=3, b+2);
参考:http://www.cplusplus.com/doc/tutorial/operator/
逗号 (",") 的结果是正确的子表达式。我在 stl 容器上的循环中使用它:
for( list<int>::iterator = mylist.begin(), it_end = mylist.end(); it != it_end; ++it )
...
逗号运算符计算逗号两侧的表达式,但返回第二个的结果。
相关文章:
- 如何将 txt 文件中的行分隔为组件C++
- 无法通过空白将文本文件行分隔为矢量
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 如何在 C++ 中将文件中的逗号分隔数字读取到数组中?
- "Warning: Comma within array index expression"但逗号分隔函数参数
- C++逗号分隔的输入数组代码过早退出
- 如何分隔字符串并将标记传递给方法
- 分隔整数 (C++) 的数字
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- 读取制表符分隔的文件时出现问题 C++
- 通过分隔符分隔包含 UTF-16 BE 文本的uint8_t数组
- 如何更新和删除文本文件中的特定逗号分隔值?C++
- 如何将逗号分隔的文件读取为 2D int 数组?
- 读取带有分隔C++的文件