为什么a[21]不等于a[021]?

#include<bits/stdc++.h>
using namespace std;
int a[500];
int main()
{
    a[21]=10;
    if(a[21]==a[021])puts("Yes");
    else puts("No");
    return 0;
}

g++ -std=c++11

输出是No,谁能告诉我为什么?

回答

在 C++ 中,整数文字上的前导 0 表示值是八进制的(类似于 0x21 表示值是十六进制的方式)。

这些值中的每一个都会不同。这是一个快速的在线演示:

http://cpp.sh/3cws4n

注意:默认输出格式cout是十进制,所以你看到的值是十进制的。


以上是为什么a[21]不等于a[021]?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>