在C ++中调整旧代码 编译器不传递类型表达式“if(a& b)”
int a = 32;
int b = 1;
if (a & b) {} <--- Compiler Error
从Int到Bool的隐式转换。
我可以改为if ((a & b)! = 0) {}
但是在许多地方阅读和发现它更糟糕。
有什么方法吗?
答案 0 :(得分:5)
C#中没有隐式转换。 if
只接受布尔值。
你必须这样做:if ((a & b) != 0) {}
答案 1 :(得分:3)
在C#中,int
非零不会自动评估为true
。 int
是int
而不是bool
,因此if (i)
仅在i
为bool
时才有效。