gpt4 book ai didi

c - 诠释 x;带有 %d 的 scanf() 和带有 %c 的 printf()

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:36 25 4
gpt4 key购买 nike

整数 x;所以变量将有 2 个字节的内存。现在,如果我输入 66 并且因为 scanf() 带有 %d,66 将存储在 2 字节内存中,因为该变量被声明为 int。

现在在带有 %c 的 printf() 中,应该只从一个字节的内存中收集数据来显示。

但是 %c 通过从内存中获取正确的数据 66 来正确显示 B 以显示。

为什么它 %c 不只是从一个字节中获取数据?

最佳答案

%c 期望 int 参数,因为可变参数函数的默认参数提升。换句话说,以下所有内容都是完全等价的:

int x = 66;
char y = 66;
printf("%c", x); // A
printf("%c", (char)x); // B
printf("%c", y); // C
printf("%c", (int)y); // D

所以所有发生的事情都是 printf 将 66 的 int 值解释为 ASCII 代码1 并打印相应的字符。


<子>1。请注意,ASCII 在技术上是一个实现定义的设计决策。只是一个非常普遍的。

关于c - 诠释 x;带有 %d 的 scanf() 和带有 %c 的 printf(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45123712/

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