为什么%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("nnGive 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 上测试了这个示例,两者的行为都相同。

  • Windows 编译器: gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0
  • Linux编译器: clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)

回答

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


以上是为什么%c格式说明符在以下代码中不起作用?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>