a = !5 < a;在这一行代码中究竟做了什么?
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
- 至少对于内置数据类型浮点 - 等价于(a > 0)
。
相关文章:
- 读取最后一行代码算法 - c++ 时出现问题
- 需要将一行代码从C++ Qt翻译成PyQt
- 在一行代码中理解 index++
- 我可以在一行代码中将向量中与条件匹配的所有元素插入到集合中吗?
- a = !5 < a;在这一行代码中究竟做了什么?
- std::vector 从一行代码清空到下一行代码
- 我如何使一行代码可以选择,但在已经选择过一次后不重新选择
- C++在 while 循环后添加一行代码会导致错误
- 一行代码的Arduino运行时间
- 如何在一行代码中使用花括号语法创建带有QJsonObjects的QJsonArray
- 是否可以使用一行代码从 std::cin 中提取格式化输入
- 有人可以解释一下工会在这一行代码中是如何工作的,以及数字是如何交换的
- 如何用一行代码连接两个矢量
- 为什么在这一行代码中同时使用 EOF 和 '