这段代码在 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
,以十六进制输出给定数量的 f
s,具体取决于整数的大小(在我的 32 位整数编译器上,我得到 ffffffff
)
(注意 - 特别是函数指针的否定 - 不能是某些有效程序的一部分,这仅用于学术目的)
int x = ~!printf;
printf("%d\t%x",x,x);
它给出:-1 ffff
谁能解释一下?
printf
是 函数指针 ,值非零值(它是 built-in 所以指针不能为零)
现在您对这个非零值应用逻辑否定 (!
):您得到零。
现在逐位取反这个零(使用位对位取反 ~
),你得到 int
位范围内的所有 1(这可能因编译器而异)
以十进制输出 -1
,以十六进制输出给定数量的 f
s,具体取决于整数的大小(在我的 32 位整数编译器上,我得到 ffffffff
)
(注意 - 特别是函数指针的否定 - 不能是某些有效程序的一部分,这仅用于学术目的)