这段代码在C中意味着什么,“int x =〜!printf; “? [关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这段代码在C中意味着什么,“int x =〜!printf; “? [关闭]相关的知识,希望对你有一定的参考价值。
int x = ~!printf;
printf("%d %x",x,x);
它给出:-1 ffff
谁能解释一下?
答案
没有参数的printf
是函数指针,值得一个非零值(它是内置的,因此指针不能为零)
现在你对这个非零值应用逻辑否定(!
):你得到零。
现在否定这个零位(使用位到位否定~
),你得到int
位范围内的所有1(这可能因编译器而异)
以十进制格式打印产生-1
,并以十六进制产生给定数量的f
s,具体取决于整数的大小(在我的32位整数编译器上,我得到ffffffff
)
(注意 - 特别是函数指针的否定 - 不能是某些有效程序的一部分,这仅用于学术目的)
以上是关于这段代码在C中意味着什么,“int x =〜!printf; “? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章