c - 以下用 C 编写的程序的输出是什么?

标签 c

我是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(因为 65A 的十进制值)被写入标准输出(因为 %c 指示 printf() 打印字符,而不是 %d 将打印数值)。

关于c - 以下用 C 编写的程序的输出是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647692/

相关文章:

c++ - 将 float 转换为 float/int 后返回不同的结果

树莓派上视差 rfid 阅读器的 c 代码

objective-c - 当 Apple 文档提到包含 ARC 属性的正确位置时,它是什么意思?

objective-c - 启动时在 iPhone Objective-C 项目中执行 C 代码

iphone - 在 iPhone OS 上,如何以编程方式检查地址簿中是否存在联系人?

c - C中无符号到有符号的转换

c - 如何监听目录或文件的变化?

c - 如何解析用户的输入以确定在 C 中打印结果的位置?

c - 内部有其他结构数组的结构的可用内存 - C

c - 我的代码 : reversing words in a string? 的时间复杂度是多少 我应该考虑不对称间距吗?