#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.我不明白这是怎么发生的.请帮助我退出这个程序......这是由于代字号运算符,如果它的原因那么如何?
是的,这是由于按位NOT运算符(~
)和未定义行为的组合.
基本上,~i
总是低于5
(好吧,比0
你的情况),因为它会返回一个负数,i
大于的值0
.当您达到最大int
数量时,i++
将溢出并因此遇到未定义的行为.
在那之前,你会1
打印,因为这是*x
回报.