c - 这个 "hello world!"程序是如何工作的?

标签 c obfuscation

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

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

最佳答案

真正有两件事:

  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 留给读者作为练习。

关于c - 这个 "hello world!"程序是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2669971/

相关文章:

c# - 混淆c#/silverlight源代码的方法

Spring Boot 混淆器

java - Android - twitter4j Proguard 错误

Javascript 缩小和混淆改变了代码中的数字

c - 如何理解客户端HTTP请求的解码?

c - 保护内存中的凭据

c - 将大的多维数组传递给 C 中的函数

C:使用结构比较文件中的 2 个字符串

c - 在 C 中读取十六进制文件

c# - 为从 Unity 4.* 构建的 android 包找到一个混淆工具