1. C语言中进制数的表示
十进制。比如20,457;
十六进制,以0x开头。比如0x7a;
八进制,以0开头。比如05,0237;
C语言没有二进制输入,最多可用函数去实现。
2. 八进制数的表达方式
C/C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0(数字0),如:123是十进制,但0123则表示采用八进制。这就是八进制数在C、C++中的表达方法。
int Var_DEC = 10;//10int Var_OCT = 010;//8八进制,以0开头int Var_HEX = 0x10;//16十六进制,以0x开头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. 避坑
先上例子:
char buff1[] = "abcdef0123456789\0123456789";printf("buff1=%s\n", buff1);char buff2[] = "abcdef0123456789\0123456789";printf("buff2=%s, buff2[6]=%c\n", buff2, buff2[6]);buff2[6] = '\0';printf("buff2=%s\n", buff2);char buff3[] = "abcdef\61\62\63\64\65\66\67\68\69";char buff4[] = "abcdef\061\062\063\064\065\066\067\068\069";printf("buff3=%s, buff4=%s\n", buff3, buff4);
理想:在buff1和buff2字符串中插入\0字符作为结束符;
分析:
1)用一个转义符’/’加上一个特殊字母来表示某个字符的方法,如:’\n’表示换行(line),而’\t’表示Tab字符,’\”则表示单引号;
2)另一种使用转义符的方法:转义符’\’后面接一个八进制数,用于表示ASCII码等于该值的字符
3)八进制用于表达字符的“转义符”表达法时,可以忽略前面的0;
附:(八进制0XXX所表示的ASCII字符)