#include <iostream>
using namespace std;
int main() {
float a =5;
a = !5 < a;
cout<<a;
return 0;
}
这给出了输出&#34; 1&#34;,帮助我理解这一点。
答案 0 :(得分:2)
!something_here
为0
的情况外, something_here
将评估为0
。
由于0 < a
,(0 < 5
),a
在解析为float时会获得true
的值1
。
答案 1 :(得分:0)
!5 < a;
这是一个布尔表达式,导致true
或false
,在将true
转换为整数或浮点数时,会导致1
,转换{ {1}}为您提供false
。
为了使代码更容易理解,这大致相当:
0
表达式的计算结果为float a =5;
bool check = !5 < a;
if(check)
a = 1;
else
a = 0;
cout<<a;
,因为true
和!5 == 0
为0 < a
。
答案 2 :(得分:0)
表达式a = !5 < a;
相当于a = (a > 0)
,由于a
初始化为5
,(a > 0)
会提供true
,转换为然后浮动值1
。
那么为什么a = !5 < a;
等同于a = (a > 0)
?表达式!5
相当于(5 == 0)
,显然是false
。 false
用于与浮点值进行比较时转换为0
,而0 < a
至少是内置数据类型float - 相当于(a > 0)
。