整型字面值
这是来自《c++ primer plus》p39 的内容。
和 c 相同的,c++提供三种计数方式来记录整型。 十进制、八进制、十六进制。
- 十进制:第一位以数字
1
2
3
4
5
6
7
8
或者9
开头。 - 八进制:第一位以数字
0
开头,后续使用数字1
2
3
4
5
6
7
。 - 十六进制:前两位以
0x
或者0X
开头。
在默认情况下,使用cout
输出数字都会以十进制为基础。我们可以举个例子。
#include <iostream>
using namespace std;
void main()
{
int a = 100;
int b = 054;
int c = 0x3f;
cout << a << endl;
cout << b << endl;
cout << c << endl;
}
结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
100
44
63
在这个例子里面很明显,a
是一个十进制的数字;b
是一个八进制的数字;c
是一个十六进制的数字。但是打印出来的时候,都是十进制的数字。
如果确实需要显示这样的(比如八进制或者十六进制的数字,可以这样试试)
#include <iostream>
using namespace std;
void main()
{
int a = 100;
int b = 054;
int c = 0x3f;
cout << dec;
cout << a << endl;
cout << oct;
cout << b << endl;
cout << hex;
cout << c << endl;
}
结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
100
54
3f
比如说cout << dec;
事实上不会输出任何内容。只是修改cout
整型的显示形式。
dec
表示显示为十进制。oct
表示显示为八进制。hex
表示显示为十六进制。
另外可以插一句:因为十六进制一般来说用于表示内存地址。所以是没有符号可言的。所以如果存放十六进制的数字。unsigned int
将会是一个比long
更好的选择。
:-)