在C++中使用'〜'有什么用?

0 c++ pointers loops

#include<iostream.h>
void main()
{
   int x[]={1,2,3,4,5};
   for(int i=0;~i<5;i++)
      {    cout<<*x;
      }
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,控制台的显示有无数的1.我不明白这是怎么发生的.请帮助我退出这个程序......这是由于代字号运算符,如果它的原因那么如何?

Luc*_*ore 7

是的,这是由于按位NOT运算符(~)和未定义行为的组合.

基本上,~i总是低于5(好吧,比0你的情况),因为它会返回一个负数,i大于的值0.当您达到最大int数量时,i++将溢出并因此遇到未定义的行为.

在那之前,你会1打印,因为这是*x回报.