【发布时间】:2021-03-17 06:38:55
【问题描述】:
我刚刚开始阅读有关 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 上测试了这个示例,两者的行为相同。
- 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)
【问题讨论】:
-
为什么您认为第一个
printf不起作用?您的预期输出是什么? -
两个样本都在工作,
'a' - 'A'返回 32(空格字符),这就是打印的内容。 -
是什么让您认为它不起作用?你期待什么?