可以将布尔表达式与逗号分隔符组合在一起.我在代码中看到了它,我不确定这会解决什么问题.我写了一些示例代码.
int BoolStatement(void)
{
using std::cout;
using std::endl;
cout << "(0, 0) => " << (0, 0) << endl;
cout << "(0, 1) => " << (0, 1) << endl;
cout << "(1, 0) => " << (1, 0) << endl;
cout << "(1, 1) => " << (1, 1) << endl;
cout << "(0, 0) => " << (0, 0) << endl;
cout << "(0, 3) => " << (0, 3) << endl;
cout << "(5, 0) => " << (5, 0) << endl;
cout << "(7, 1) => " << (7, 1) << endl;
cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个输出是:
(0, 0) => 0
(0, 1) => 1
(1, 0) => 0
(1, 1) => 1
(0, 0) => 0
(0, 3) => 3
(5, 0) => 0
(7, 1) => 1
Run Code Online (Sandbox Code Playgroud)
我不确定这是否仅适用于我的系统,并且此调用实际上与布尔语句组合相同.
什么是输出,是否在所有系统上都相同?为什么这个陈述是可能的并且有关于它的文件?
什么是输出,是否在所有系统上都相同?
输出如您所述:两个值中的第二个.它定义明确.
为什么这个陈述可能?
因为逗号运算符允许您在单个表达式中评估多个事物.
有文件吗?
它在C++标准[expr.comma]中有记录.在C++ 11中,那是5.18.
总结一下,逗号运算符:
您可以从输出中看到:在每种情况下,输出都是逗号后面的值.
在这种情况下,这完全没有意义; 但是,如果第一个表达式具有您希望在第二个表达式之前排序的副作用,则在仅允许单个表达式的情况下非常有用.例如:
for (int i = 0, j = n; i < j; ++i, --j)
Run Code Online (Sandbox Code Playgroud)
运算符允许最终表达式执行两项操作,即使您只能在其中放置一个表达式.
一个看起来像这样的表达式
(a, b)
Run Code Online (Sandbox Code Playgroud)
是一个逗号表达式,它的值是它的最右边的操作数,即
(a, b, ..., z)
Run Code Online (Sandbox Code Playgroud)
会产生价值z.
请注意,链中的所有表达式都会被评估,包括带有副作用的表达式.此外,逗号充当序列点,这意味着在评估下一个操作数之前应用副作用.
| 归档时间: |
|
| 查看次数: |
3218 次 |
| 最近记录: |