警告有关数组索引中使用的int -0的引用

Fan*_*Fox 3 c++

请考虑以下代码:

vector<int> a = {1, 2, 3, 4, 5};
cout << a[-0] << std::endl;
Run Code Online (Sandbox Code Playgroud)

此代码将编译并打印出来1.一切都很好.我假设编译器-0改为a 0.

有趣的问题:在不使用电脑的数字系统甚至允许-0作为int了吗?

我想不出你需要的任何理由,int -0它会让代码更加混乱?

是否有任何标志(如迂腐)会对此发出警告?

背景:我在一些工作代码中发现了一些,不知道为什么,但我想确保我们将来知道它们.

Lig*_*ica 6

你正在向后看.事实上,在编译器中编写代码是没有意义的,不要让这个程序编译,因为正如你所说的那样,表达式-0完全有效且相当于0.

你必须引入一个新的特殊情况,一元-应用于具有这个特定值的整数文字...以及为什么?

如果你正在编写令人困惑的代码,那么坦率地说这是你自己的错; 编译器没有让你这样做.