首页 > 解决方案 > 为什么 %c 格式说明符在以下代码中不起作用?

问题描述

我刚刚开始阅读有关 C 的内容,目前正在使用格式说明符。这是代码示例:

#include <stdio.h>


int main(void) {
    char code = 'a' - 'A';
    printf("\n>>>%c (%d)", code, code);
    printf("\n>>>%c", 32);

    char incode;
    printf("\n\nGive me some char: ");
    scanf("%c", &incode);
    printf("\n>>>%c (%d)", incode, incode);
    return 0;
}

输出:

PS C:\ex> ./print

>>>  (32)
>>>

Give me some char: A

>>>A (65)

那么,为什么%c在最后printf起作用而在开始时不起作用?我在 Windows 和 Linux 上测试了这个示例,两者的行为相同。

标签: cprintfclang

解决方案


ASCII 32 是' '(空格)。打印好了,就是看不到。
如果您将格式字符串更改为,"\n>>>%c<< (%d)"您将在(双关)负号空格中看到它。
您也可以通过输出od -a来确认。


推荐阅读