深圳幻海软件技术有限公司 欢迎您!

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

2023-03-25

1.C语言中进制数的表示        十进制。比如20,457;         十六进制,以0x开头。比如0x7a;&nbsp

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

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

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

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);

        执行结果: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字符)

 

 

文章知识点与官方知识档案匹配,可进一步学习相关知识
C技能树首页概览134650 人正在系统学习中