Jav*_*tar 0 c format-specifiers conversion-specifier
int x; 因此变量将有2个字节的内存.现在,如果我输入66并且因为scanf()带有%d,66将存储在2字节内存中,因为该变量被声明为int.
现在在带有%c的printf()中,应该只从一个字节内存中收集数据来显示.
但是%c通过从内存中获取正确的数据66来正确显示B.
为什么%c不只是从一个字节获取数据?
%c int由于vararg函数的默认参数提升,因此需要一个参数.换句话说,以下所有内容完全相同:
int x = 66;
char y = 66;
printf("%c", x); // A
printf("%c", (char)x); // B
printf("%c", y); // C
printf("%c", (int)y); // D
Run Code Online (Sandbox Code Playgroud)
所以所发生的一切printf就是将int66 的值解释为ASCII码1并打印相应的字符.
1.请注意,ASCII在技术上是一个实现定义的设计决策.只是一个绝对普遍的.
| 归档时间: |
|
| 查看次数: |
429 次 |
| 最近记录: |