我可以在C上使用int运算符中的not运算符吗?
作者:互联网
奇怪的问题,但有人告诉我这个,
我想知道你能不能使用! C中的int运算符? (对我来说很奇怪).
#include <iostream>
using namespace std;
int main()
{
int a=5, b=4, c=4, d;
d = !( a > b && b <= c) || a > c && !b;
cout << d;
system ("pause");
return 0;
}
解决方法:
是.对于整体类型,!如果操作数为零,则返回true,否则返回false.
所以!b这里只是意味着b == 0.
这是将值转换为bool的特殊情况. !b可以被视为!((bool)b)所以问题是b的“真实性”是什么.在C中,算术类型,指针类型和枚举可以转换为bool.当值为0或null时,结果为false,否则为true(C§4.1.2).
当然,自定义类甚至可以使运算符超载!或运算符<类型可以转换为bool>允许!b为他们的课程.例如,std :: stream已经重载了运算符!和operator void *用于检查failbit,以便成语如
while (std::cin >> x) { // <-- conversion to bool needed here
...
可以使用.
(但你的代码!(a> b&& b< = c)|| a> c&&!b只是神秘的.)
标签:negation,c,int,logical-operators 来源: https://codeday.me/bug/20191007/1868694.html