其他分享
首页 > 其他分享> > 我可以在C上使用int运算符中的not运算符吗?

我可以在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