#include<stdio.h>
int main() {
int x;
x=~!printf;
printf("%x",x);
}
有人可以向我解释导出该程序输出的过程。
答案 0 :(得分:8)
printf
是指向printf
函数的指针 - 因此它最终是某种整数。 !
是一元NOT,意味着如果操作数为true则返回0
,而1
则操作数为false。由于printf
为真(非零,因为函数已定义),因此到目前为止的子表达式为0
。~
是按位补码。它翻转它给出的二进制数的所有位。由于它是0
,因此会返回0xffffffff
。x
中并以十六进制打印出来。 在64位计算机上,您可能会获得0xffffffffffffffff
,但我并不完全确定。