我是C语言的新手,但我能理解为什么会这样 以下代码将输出为“A”。
困扰我的一件事是 printf 语句。编译器如何处理这个 p?
第5行后的p如何被字符数组“%c\n”替换?
我知道这是一个愚蠢的问题,所以很抱歉发布这个问题。
谁能帮我理解这背后的概念?
line1: #include<stdio.h>
line2: int main()
line3: {
line4: char p[]="%d\n";
line5: p[1]='c';
line6: printf(p,65);
line7: return 0;
}
最佳答案
printf()
的第一个参数是包含格式说明符的 const char*
。更常见的是将其视为字符串文字:
printf("%c\n", 65);
但是使用包含字符串的变量是合法的。
p[1] = 'c'
的赋值将缓冲区 p
中的 d
更改为 c
>,导致字符 A
(因为 65
是 A
的十进制值)被写入标准输出(因为 %c
指示 printf()
打印字符,而不是 %d
将打印数值)。
关于c - 以下用 C 编写的程序的输出是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647692/