#include<stdio.h>
void main()
{
printf(5+"good morning");/*need explanation for this line
return 0;
}
该计划的输出是 - 早上 任何人都可以解释一下吗?
答案 0 :(得分:1)
printf
int printf(const char *format, ...);
此处format
是const char*
的一种类型,并指向字符串文字的第一个元素的地址。当您在5+"Good morning"
中传递printf
时,您实际传递的是字符串的内存地址加5
。加号5
表示打印将在字符串开头之后开始5
chars
,而单词“Good”之后的空格将计为字符。
答案 1 :(得分:1)
当您使用5+"good morning"
参数调用时转换为指针。这意味着在可执行文件中的某处存储了字符串常量"good morning"
,并且编译器传递其指针。像这样的东西:
const char txt[]="good morning\0";
printf(5+txt);
因此printf
将获得评估指针txt+5
,该指针绕过字符串中的前5个字符(因为一个字符是8位WORD寻址机上的单个字节和单个内存地址)。
答案 2 :(得分:0)
该计划的输出是 - 上午
printf(5+"good morning");
将字符串打印在" "
, overpassing 前五个字符中。因此,前四个字符g
,o
,o
,d
和第五个字符(空格)将被覆盖,其余字符串将被打印。< / p>
答案 3 :(得分:0)
Printf()
方法,用于在()
仅打印&#34;早上&#34;并且5+绕过最初的5个字符,即&#34; g&#34; &#34; O&#34; &#34; O&#34; &#34; d&#34;和一个&#34; &#34; (空间)