这个“hello world!”是如何实现的?程序工作?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
实际上有两件事:
*main == main
因此,如果我们简化指针:
并使用列表中的最后一个元素作为列表的值
printf
返回打印的字符数,13*0 留给读者作为练习。
Two things really:
*main == main
So if we simplify the pointers:
And using the last element in the list as the value of the list
printf
returns the number of characters printedAnd 13*0 is left as an exercise to the reader.
将计算为
*********printf
,因为逗号运算符计算其操作数并返回最后一个表达式的值。******printf
等于 printf,因为取消引用函数指针会产生相同的函数指针;它什么也不做。接下来,将第一个括号 printf 的结果应用于 ("hello world!\n"),从而将文本打印到屏幕上。 printf 函数返回写入的字符数。然后将该数字与 0 相乘,结果由 main 函数返回。
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.