这段代码在 C 中是什么意思,“int x = ~!printf;”?

What does this code mean in C, " int x = ~!printf; "?

int x = ~!printf;
printf("%d\t%x",x,x);

它给出:-1 ffff

谁能解释一下?

没有参数的

printf 函数指针 ,值非零值(它是 built-in 所以指针不能为零)

现在您对这个非零值应用逻辑否定 (!):您得到零。

现在逐位取反这个零(使用位对位取反 ~),你得到 int 位范围内的所有 1(这可能因编译器而异)

以十进制输出 -1,以十六进制输出给定数量的 fs,具体取决于整数的大小(在我的 32 位整数编译器上,我得到 ffffffff)

(注意 - 特别是函数指针的否定 - 不能是某些有效程序的一部分,这仅用于学术目的)