【发布时间】:2022-01-25 15:17:06
【问题描述】:
我见过这种在 printf 和 scanf 语句中使用字符串组合的方式。
int a;
printf("Printing" "using" "multiple" "strings" "%d", a);
// The above is just an example, some usage that I saw was for printing specific integer types like int_32
// uint32_t var; printf("Value is %" PRTu32, var);
我一直认为我们只能使用单个字符串作为格式说明符。就像 printf 函数的定义中写的那样,格式似乎只能指向一个字符串。
int printf ( const char * 格式, ... );
所以出于好奇,我尝试了以下代码并成功运行!
char arr[] = "Hello " "World";
printf("%s",arr); // Output - Hello World
谁能解释一下这种串联是如何工作的,以及正确的做法是什么。任何帮助表示赞赏。
【问题讨论】:
-
连接就像连接一样工作!编译器看到
"foo" "bar"并将其视为"foobar"。 -
参见port70.net/~nsz/c/c11/n1570.html#5.1.1.2 的 5.1.1.2。 "相邻的字符串文字标记被连接。"