我在理解以下代码片段的输出时遇到一些问题。
#include<stdio.h>
int main()
{
char *str;
str = "%d\n";
str++;
str++;
printf(str-2, 300);
return 0;
}
代码的输出是300。
我明白,直到 printf
语句之前的那一行,str
指向字符-%
。我需要帮助的是理解为什么 printf
函数打印 300。
最佳答案
就在 printf
之前,str
不是指向 %
而是指向 \n
.
++
运算符递增 str
的值以指向数组中的下一个字符。由于执行了两次,因此它指向 \n
。当您随后将 str-2
传递给 printf
时,它会创建一个指向 %
的指针。所以 printf
看到字符串 "%d\n"
导致 300 按预期打印。
关于c - 关于 printf 语句输出的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56856016/