C语言/C++中怎么表示8进制数或者16进制数?(8进制数用数字0开头,16进制数用0x或者0X开头)

在C语言里,整数有三种表示形式:十进制,八进制,十六进制。
其中以数字0开头,由0到7组成的数是八进制。
0X或0x(0x中是数字0,不是大写字母O)开头,由0-9,A-F或a~f 组成是十六进制。
除表示正负的符号外,以1-9开头,由0-9组成是十进制。

1.十进制:除表示正负的符号外,以数字1~9开头,由数字0到9组成组成。如,128,+234,-278。
2,八进制:以0开头,由0~7组成的数。如,0126,050000.
3,十六进制:以0X或0x开头,由0-9,A-F或a~f 组成。如,0x12A,0x5a000.

编程语言通常规定是以0(数字0)开头的数字是八进制数,以0x开头的数字是十六进制数,其余的就是十进制数,“十进制是D表示 二进制是B 十六进制是H”在编写程序时是不能用的,那只是为了方便,书写时(不是在计算机上编程时)用到的(只对于C语言编程,汇编语言编程时,是写上的),假如程序 int x=011中,x是用八进制表示的一个数字,它是9,后面的printf("%d\n",++x);是以10进制形式打印结果(%d的作用),所以程序运行的结果是9。

小例子:
#include
using namespace std;
int main()
{
int a,b,c,d,e;
a=0644;
// b=O644; //[Error] ‘O644’ was not declared in this scope ,是数字0,不是字母O
// c=Ox10; //[Error] ‘Ox10’ was not declared in this scope
d=0x10;
e=0X20;
cout<<a<<" “<<b<<” “<<c<<” “<<d<<” "<<e<<endl;
}

运行结果:
在这里插入图片描述
可见,cout是默认输出10进制数字。(从b=53,还说明变量不初始化,则该变量的值是随机的,不一定是0)

由于十进制数以1-9开头,8进制数以0开头,所以可以区别开。
当程序中,设置内存权限位时,就用到八进制数字。
(例如:shm_flg = IPC_CREAT | 0644;//设置共享内存读写权限
表示:-rw-r–r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限 )

参考来源:https://zhidao.baidu.com/question/535989938.html?qbl=relate_question_2&word=C%D3%EF%D1%D4%D6%D0%2C%D4%F5%C3%B4%B1%ED%CA%BE%D2%BB%B8%F68%BD%F8%D6%C6%CA%FD%D7%D6

发布了149 篇原创文章 · 获赞 22 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/deniece1/article/details/103217971