【发布时间】:2012-07-19 07:22:11
【问题描述】:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i=-5;
while(~(i))
{
cout<<i;
++i;
}
}
输出为 -5,-4,-3,-2。 它不应该将值打印到-1吗?为什么只打印到-2。 请解释一下“非”和“否定”运算符之间的区别。当我编写程序时,它们是错误的来源。
while(i)
我知道除了 0 之外的正负 i 的循环条件都是正确的。
while(!i) vs while(~i)
上面两个循环执行的'i'值是多少?
【问题讨论】:
-
如果您不记得
!和~之间的区别,请使用!。它几乎总是你想要的。~很少需要。 -
提示可能对您有用,因为正确答案已经发布。对于(模)整数类型,
~i == -i - 1. -
运算符在 C++ 中确实有名称:
!是not,~是compl。 (小写,不是大写) -
@MSalters 或在 C 中使用
iso646.h
标签: c++ c bitwise-operators logical-operators