Seo*_* OH 1 c++ boolean implicit-conversion type-promotion logical-and
在代码中实现逻辑运算时,发现一个现象,不应该在if语句中输入。原来这是AND (&&)-1和自然数的运算。
我不知道为什么在下面的相同代码中打印值 1。我直接运行1的补码和2的补码等计算,但没有得出1。
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = -1;
int c = a && b;
printf("test = %d",c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该表达式a && b是一种bool类型,并且是trueor false:true当且仅当和 a都b非零时,false否则为。正如您的问题提到补码方案(请注意,从 C++20 开始, anint始终是 2 的补码),出于 的目的,-0 和 +0 都为零&&。
当分配给inttype时c,该bool类型会隐式转换为 0 (if false) 或 1 (if true)。
(在 C 中,分析类似,只是a && b是一种int类型,因此不会发生隐式转换。)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |