• C语言八进制数(避坑指南)


    1. C语言中进制数的表示

            十进制。比如20,457; 
            十六进制,以0x开头。比如0x7a; 
            八进制,以0开头。比如05,0237;

            C语言没有二进制输入,最多可用函数去实现。

            二进制:逢二进一;所以只有0/1
            八进制:逢八进一;所以不能有8/9
            十进制:逢十进一;所以只能0-9
            十六进制:逢十六进一;0-9+A(10)-F(15)

    2. 八进制数的表达方式

            C/C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0(数字0),如:123是十进制,但0123则表示采用八进制。这就是八进制数在C、C++中的表达方法。

    1. int Var_DEC = 10;//10
    2. int Var_OCT = 010;//8 八进制,以0开头
    3. int Var_HEX = 0x10;//16 十六进制,以0x开头
    4. printf("Var_DEC=%d, Var_OCT=%d, Var_HEX=%d\n", Var_DEC, Var_OCT, Var_HEX);
    5. char buff5[] = "123456789\cd987654321"; \c:没有实际含义
    6. //单个反斜杠,在字符串中会被当做转义字符处理,若后续没有实际含义,会提示warning: warning: unknown escape sequence '\c',并且不会将\打印出来
    7. char buff5[] = "123456789\1237654321"; \12:换行符
    8. //若后续有实际含义,会将转换后的字符打印出来
    9. char buff5[] = "123456789\\12987654321";
    10. //打印出1个\字符

            执行结果:Var_DEC=10, Var_OCT=8, Var_HEX=16

    注:

            1)用八进制表达时,你不能少了最前的那个0。否则计算机会通通当成10进制(随之也挖好了坑)

            2)但在用于表达字符的“转义符”表达法时,可以忽略前面的0;

    3. 避坑

    先上例子:

    1. char buff1[] = "abcdef0123456789\0123456789";
    2. printf("buff1=%s\n", buff1);
    3. char buff2[] = "abcdef0123456789\0123456789";
    4. printf("buff2=%s, buff2[6]=%c\n", buff2, buff2[6]);
    5. buff2[6] = '\0';
    6. printf("buff2=%s\n", buff2);
    7. char buff3[] = "abcdef\61\62\63\64\65\66\67\68\69";
    8. char buff4[] = "abcdef\061\062\063\064\065\066\067\068\069";
    9. printf("buff3=%s, buff4=%s\n", buff3, buff4);

    理想:在buff1和buff2字符串中插入\0字符作为结束符;

    分析:

            1)用一个转义符'/'加上一个特殊字母来表示某个字符的方法,如:'\n'表示换行(line),而'\t'表示Tab字符,'\''则表示单引号;

            2)另一种使用转义符的方法:转义符'\'后面接一个八进制数,用于表示ASCII码等于该值的字符

            3)八进制用于表达字符的“转义符”表达法时,可以忽略前面的0;

    附:(八进制0XXX所表示的ASCII字符)

  • 相关阅读:
    Objective-C——基础知识4(description关键字)
    Python语言:经典例题分析讲解
    汇编语言实验5:循环结构程序设计
    phoenix安装
    【全国计算机二级】python的jieba模块,你真的了解吗?
    前端培训技术AngularJS 控制器
    【慢SQL性能优化】 一条SQL的生命周期 | 京东物流技术团队
    重生奇迹MU装备好坏如何判断
    帝国CMS网站建设仿站在线学习培训高清教学课程视频
    C#单元测试入门举例
  • 原文地址:https://blog.csdn.net/hao745580264_dawei/article/details/126580176