gpt4 book ai didi

c - printf 是否只允许将字符串文字作为第一个参数?

转载 作者:行者123 更新时间:2023-12-03 22:44:22 24 4
gpt4 key购买 nike

根据 printf 的定义,它说第一个参数应该是一个数组,即 char* 后跟省略号 ... 即之后的可变参数。如果我写:

printf(3+"helloWorld"); //Output is "loWorld"`

按照定义应该不会报错吧?

这里是 printf 的定义:

#include <libioP.h>
#include <stdarg.h>
#include <stdio.h>

#undef printf

/* Write formatted output to stdout from the format string FORMAT. */
/* VARARGS1 */
int __printf(const char *format, ...) {
va_list arg;
int done;

va_start(arg, format);
done = vfprintf(stdout, format, arg);
va_end (arg);

return done;
}

#undef _IO_printf
ldbl_strong_alias(__printf, printf);
/* This is for libg++. */
ldbl_strong_alias(__printf, _IO_printf);

最佳答案

这不是错误。

如果将 "helloWorld" 传递给 printf,则字符串文字将转换为指向第一个字符的指针。

如果您传递 3+"helloWorld",您会将 3 添加到指向第一个字符的指针,这会导致指向第 4 个 字符的指针。这仍然是指向字符串的有效指针,只是不是定义的整个字符串。

关于c - printf 是否只允许将字符串文字作为第一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49456599/

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