#include<stdio.h>
int main() {
int x;
x=~!printf;
printf("%x",x);
}
このプログラムの出力を導き出すプロセスを誰かが説明してくれませんか?
#include<stdio.h>
int main() {
int x;
x=~!printf;
printf("%x",x);
}
このプログラムの出力を導き出すプロセスを誰かが説明してくれませんか?
printf
関数へのポインタprintf
です - したがって、最終的にはある種の整数です。!
は単項 NOT です。つまり0
、オペランドが true で1
、オペランドが false の場合に返されます。が真であるためprintf
(関数が定義されているため非ゼロ)、これまでの部分式は0
です。~
ビットごとの補数です。指定された 2 進数のすべてのビットを反転します。与えられているので0
、これを返し0xffffffff
ます。x
、16 進数で格納され、出力されます。64 ビット マシンでは0xffffffffffffffff
、完全にはわかりませんが、代わりに が表示される場合があります。