Bar*_*kPL 3 c++ boolean conditional-operator
我曾经相信在下面的语句中使用条件运算符是可以的,但事实并非如此。在复杂的语句中是否有任何限制使用条件运算符?
#include <iostream>
using namespace std;
int main() {
int a = 1;
int b = 10;
bool c = false;
int result = a * b + b + c ? b : a;
std::cout << result << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
预测输出: 21
实际输出: 10
为什么?
此声明中的初始化程序
int result = a * b + b + c ? b : a;
Run Code Online (Sandbox Code Playgroud)
相当于
int result = ( a * b + b + c ) ? b : a;
Run Code Online (Sandbox Code Playgroud)
子表达式的a * b + b + c 计算结果为20。由于它不等于0,因此会在上下文中转换为true。
因此,条件表达式的值是第二个子表达式,b它等于10。
我认为您的意思是声明中的以下初始化程序
int result = a * b + b + ( c ? b : a );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |