我是c ++的新手,并试图了解条件(三元)运算符的工作原理。我熟悉它在java中的用法,但对于我在c ++中看到的一个例子非常困惑
int main()
{
bool three = 3;
int x = three ? 3 : 0;
cout << x << "\n";
return 0;
}
首先,bool
数据类型如何接受int
?其次,int x = three
,这不是一项任务,而不是x == 3
的条件测试?或是它说,&#34;创建一个名为int
的{{1}}并在x
其他3
时分配three == 3
?&#34;
答案 0 :(得分:6)
bool three = 3;
隐式将 3转换为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;