<分区>
#include<iostream.h>
void main()
{
int x[]={1,2,3,4,5};
for(int i=0;~i<5;i++)
{ cout<<*x;
}
}
当我运行这个程序时,控制台的显示有无数个 1。 我不明白这是怎么发生的。请帮助我退出这个程序...... 这是波浪号运算符的原因吗?如果是原因,那又是怎么回事?
<分区>
#include<iostream.h>
void main()
{
int x[]={1,2,3,4,5};
for(int i=0;~i<5;i++)
{ cout<<*x;
}
}
当我运行这个程序时,控制台的显示有无数个 1。 我不明白这是怎么发生的。请帮助我退出这个程序...... 这是波浪号运算符的原因吗?如果是原因,那又是怎么回事?
最佳答案
是的,这是由于按位非运算符 (~
) 和未定义行为的组合。
基本上,~i
将始终低于 5
(嗯,在您的情况下低于 0
),因为它会返回负数i
的值大于 0
的数字。当您达到最大 int
数时,i++
将溢出并因此遇到未定义的行为。
但在那之前,您将打印 1
,因为这是 *x
返回的内容。
关于c++ - C++中 '~'有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13161209/