• 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字符)

  • 相关阅读:
    k8s教程(02)-入门及案例
    【微服务】Nacos通知客户端服务变更以及重试机制
    【C++】神奇字符串(力扣481)
    物联网、云计算、软件设计的前景都怎么样啊有没有业内懂哥
    合并不同年度收入数据-外连接
    configs
    el-row一行放置3个el-col,有时出现空行现象
    排序之插入排序
    如何排查Java内存泄漏?
    CentOS 7迁移Tencent OS 2.4 tk
  • 原文地址:https://blog.csdn.net/hao745580264_dawei/article/details/126580176