【发布时间】:2016-10-22 16:27:30
【问题描述】:
以下代码的输出是:
Hello World4
怎么做?
#include "stdio.h"
int func()
{
return(printf("Hello world"));
}
int main()
{
printf("%d",sizeof(fun));
return 0;
}
PS :- 根据我的说法,sizeof() 调用 func() 函数,其中返回 statemnt 调用 printf 函数打印 hello world 并返回字符串的长度,即 11 到返回函数,然后 sizeof() 函数返回大小11 是 int 和 int 的值取决于编译器 2 或 4
【问题讨论】:
-
您确定该输出吗?看不到任何
func的调用,d和4之间的空格是从哪里来的? -
该代码无法在 MSVC 中编译。产生你所说的并不是代码。
-
@4386427 根据理论点,我认为答案是正确的。但是在任何 IDE 上运行时都会失败。此外,答案因IDE而异。
-
输出“Hello World”的唯一方法是调用 func()。但在代码中没有任何地方是这种情况。在
sizeof(func)中,func是一个函数指针,因此即使 sizeof 不是特殊运算符 func 也不会被调用。但是 sizeof 是特殊的,即使是sizeof(func()),它实际上是有效的代码,也不会调用 func。不评估 sizeof 的参数,仅评估类型。sizeof(func())与sizeof(int)相同,在大多数系统上为 4。