gpt4 book ai didi

c - c 中 printf 函数的意外行为

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

最近遇到一道面试题。我不明白 printf 函数在这种情况下的行为

 #include <stdio.h>
int main() {
int k = printf("String");
printf("%d",k);
}

预期结果:编译错误

输出:String6

为什么输出是String6

最佳答案

这是 printf 的原型(prototype):

int printf(const char *format, ...);

我们可以看到 printf 返回一个 int

documentation表示:

Upon successful return, these functions return the number of characters printed (excluding the null byte used to end output to strings).


你问为什么输出是“String6”。嗯:

printf("String");

这首先打印 String打印换行符。由于 String 是 6 个字符,printf 返回 6,您将其存储在 k 中:

printf("%d",k);

然后打印 6(在同一行)。


尝试运行这个程序:

#include <stdio.h>
int main(void)
{
int bytes_printed = printf("%s\n", "String");
// 7 = 1 + 6

printf("printf returned: %d\n", bytes_printed);

return 0;
}

输出:

String
printf returned: 7

关于c - c 中 printf 函数的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55543146/

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