gpt4 book ai didi

c - C 中的格式说明符及其作用?

转载 作者:行者123 更新时间:2023-12-01 22:56:47 26 4
gpt4 key购买 nike

将此代码写入“查找给定字符是否为数字”

#include<stdio.h>
int main()
{
char ch;
printf("enter a character");
scanf("%c", &ch);
printf("%c", ch>='0'&&ch<='9');
return 0;
}

这得到了编译,但在接受输入后它没有给出任何输出。但是,将倒数第二行的 %c 更改为 %d 格式说明符后,它确实起作用了。我有点困惑,为什么 %d 有效但 %c 没有,尽管变量是字符数据类型。

最佳答案

C 中的字符实际上只是标记表中的数字。 %c主要是在人类喜欢读/写的字母数字标记表和 C 程序内部使用的原始二进制文件之间进行转换。

表达式ch>='0'&&ch<='9'评估为 10这是 int 类型的原始二进制整数(在 C++ 中它将是 bool 类型)。如果您尝试使用 %c 打印那个,你会得到 symbol table character索引为 0 或 1,这甚至不是可打印字符(0-31 不可打印)。所以你打印了一个不可打印的字符……你要么什么也看不到,要么你会看到一些奇怪的符号。

相反,您需要使用 %d用于打印整数,然后 printf将正确转换为可打印符号 '1''0'


作为旁注,养成总是以 \n 结束 printf 语句(的序列)的习惯。因为在许多系统上“刷新输出缓冲区”=实际上打印到屏幕上。参见 Why does printf not flush after the call unless a newline is in the format string?详情

关于c - C 中的格式说明符及其作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72935245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com