[英]a = !5 < a; what is exactly done in this line of code?
#include <iostream>
using namespace std;
int main() {
float a =5;
a = !5 < a;
cout<<a;
return 0;
}
这给出了输出“1”,帮助我理解这一点。
!something_here
将评估为0
除非something_here
为0
。
由于0 < a
, ( 0 < 5
),当解析为浮点数时, a
会获得true
值,即1
。
!5 < a;
这是一个布尔表达式,结果为true
或false
,在这种情况下将true
转换为整数或浮点数时,结果为1
,转换为false
则为0
。
为了使代码更易于理解,这大致等效:
float a =5;
bool check = !5 < a;
if(check)
a = 1;
else
a = 0;
cout<<a;
该表达式的计算结果为true
因为!5 == 0
和0 < a
为true
。
表达式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)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.