小编xin*_*ing的帖子

使用八进制常量初始化 char 数组

我看到一条评论说用 char 数组初始化"\001"会将 nul 作为第一个字符。我已经看到在哪里\0设置了一个nul。

未经编辑的评论:

字符输入[大小] = ""; 是足够的初始化。如果您已初始化 input[SIZE] = "\001"; while ( '\001' == input[0]) 不会执行您认为它正在执行的操作;(这会创建一个空字符串,其中第一个字符为 nul 字符。)

这个节目

#include <stdio.h>
#define SIZE 8
int main ( void) {
    char input[SIZE] = "\001";

    if ( '\001' == input[0]) {//also tried 1 == input[0]
        printf ( "octal 1\n\n");
    }
    else {
        printf ( "empty string\n");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在 Linux 上运行,使用 , 编译gcc,输出:

octal 1
Run Code Online (Sandbox Code Playgroud)

所以第一个字符是1而不是'\0'。
这是标准行为还是只是 …

c octal

1
推荐指数
1
解决办法
796
查看次数

标签 统计

c ×1

octal ×1