c++ - C++中 '~'有什么用?

标签 c++ pointers loops

<分区>

#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/

相关文章:

c++ - 在 C++ 中,如何获取指向 vector 的指针?

c++ - 在opencv c++函数中查找凸缺陷点

c++ - 临时对象的字段是右值吗?

c - 有什么方法可以比较两个 void 指针以在 C 中声明相同的类型吗?

java - 循环遍历 InputStream 截断数据

node.js - Nodejs 使用 readline 时暂停

java - 为什么我的方法给我空值?

c++ - 在 C++ 中使用 wastorage 将 uint8_t 数组上传到 azure blob 存储的最佳方法

c++ - 声明一个 C++ 类而不在当前翻译单元中定义它

c++ - 指针映射的数组下标运算符