📜  c中的八进制数

📅  最后修改于: 2021-05-25 22:43:51             🧑  作者: Mango

C中与八进制数字有关的事实鲜为人知。让我们首先看下面的示例代码。

例子:

// program to show octal number interpretation
#include 
  
int main()
{
    int x = 012;
    printf("%d", x);
    return 0;
}

输出:

10

令人惊讶的是,输出不是12。这是因为在0之前的整数被解释为八进制数。十进制值12的八进制数是10。但是,如果x等于092,那么编译器将显示错误,因为92不是有效的八进制数。

八进制转义序列
在C中,八进制转义序列由\表示,后跟三个八进制数字。注意,也允许一个或两个八进制数字。八进制序列结束于\后面的三个八进制数字之后,或者\后面的数字不是八进制数字时结束。

例子:

// program to show octal escape sequence
#include 
int main()
{
    char str[] = "31\01267";
    printf("%s", str);
    return 0;
}

输出:

31
67

如果我们看一下输出,那么31后一个字符印刷,然后67被打印出来。这是因为\ 012被解释为\ n或换行字符。其实,\ 012表示八进制转义序列\ n或换行。十进制的12的八进制值为10,ASCII表示换行符。

// program to show octal escape sequence
#include 
int main()
{
    char str[] = "31\12367";
    printf("%s", str);
    printf("\n");
    char str2[] = "11\77967";
    printf("%s", str2);
    return 0;
}

输出:

31S67
11?967

在str \ 123中,它被解释为八进制转义序列,八进制123的值为83,并且在我的计算机中与之对应的字符为’S’,因为我的计算机使用ASCII。如果使用的字符集不是ASCII,则可以不同。
在str2中,\ 77被解释为八进制转义序列,而不是\ 779。因此,77的值以十进制表示为63,以ASCII表示为“?”。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。