hax*_*ode -3 c++ ternary-operator
我是c ++的新手并试图了解条件(三元)运算符的工作原理.我熟悉它在java中的用法,但对于我在c ++中看到的一个例子非常困惑
int main()
{
bool three = 3;
int x = three ? 3 : 0;
cout << x << "\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
首先,bool数据类型如何接受int?第二,int x = three这不是一项任务,而不是一项有条件的测试x == 3吗?或者它是说,"创建一个int被叫x,并3在three == 3其他地方分配0?"
bool three = 3;隐式地将 3 转换为a bool,因此three将具有值true.(任何非零数字都将转换true为零,转换为false.)
另请注意,三元条件的优先级高于赋值(在C++和Java中).
所以int x = three ? 3 : 0;相当于int x = (three ? 3 : 0);.
int x = (three ? 3 : 0);因此相当于int x = (true ? 3 : 0);相当于int x = 3;