这个“hello world!”是如何实现的?程序工作?

发布于 2024-08-29 02:58:11 字数 169 浏览 4 评论 0原文

int main(void)
{ 
    return('yes', *"no", **main, *********printf) ("hello world!\n") *0; 
}

输出 hello world!,但它实际上是如何工作的呢?

int main(void)
{ 
    return('yes', *"no", **main, *********printf) ("hello world!\n") *0; 
}

outputs hello world!, but how does it actually work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

诗化ㄋ丶相逢 2024-09-05 02:58:11

实际上有两件事:

  1. 函数指针不像其他指针那样取消引用。 *main == main
  2. 逗号分隔的列表返回列表中最后一个元素的值

因此,如果我们简化指针:

int main(void)
{ 
    return('yes', *"no", main, printf) ("hello world!\n") *0; 
}

并使用列表中的最后一个元素作为列表的值

int main(void)
{ 
    return printf("hello world!\n") *0; 
}

printf 返回打印的字符数

int main(void)
{ 
    return 13 *0; 
}

,13*0 留给读者作为练习。

Two things really:

  1. Function pointers don't dereference the same as other pointers. *main == main
  2. A comma separated list returns the value of the last element in the list

So if we simplify the pointers:

int main(void)
{ 
    return('yes', *"no", main, printf) ("hello world!\n") *0; 
}

And using the last element in the list as the value of the list

int main(void)
{ 
    return printf("hello world!\n") *0; 
}

printf returns the number of characters printed

int main(void)
{ 
    return 13 *0; 
}

And 13*0 is left as an exercise to the reader.

对岸观火 2024-09-05 02:58:11
('yes', *"no", **main, *********printf) 

将计算为 *********printf,因为逗号运算符计算其操作数并返回最后一个表达式的值。 ******printf 等于 printf,因为取消引用函数指针会产生相同的函数指针;它什么也不做。

接下来,将第一个括号 printf 的结果应用于 ("hello world!\n"),从而将文本打印到屏幕上。 printf 函数返回写入的字符数。然后将该数字与 0 相乘,结果由 main 函数返回。

('yes', *"no", **main, *********printf) 

will evaluate to *********printf, because comma operator evaluates its operands and returns value of last expression. *********printf is equal to printf, as dereferencing function pointer results in the same function pointer; it does nothing.

Next, result of first parenthesis, printf, is applied to ("hello world!\n") which results in text printed to screen. printf function returns number of characters written. That number is then multiplied with 0 and product is returned by main function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文