2
#include<stdio.h>
  int main() {
  int x;
  x=~!printf;
  printf("%x",x);
}

このプログラムの出力を導き出すプロセスを誰かが説明してくれませんか?

4

1 に答える 1

8
  • printf関数へのポインタprintfです - したがって、最終的にはある種の整数です。
  • !は単項 NOT です。つまり0、オペランドが true で1、オペランドが false の場合に返されます。が真であるためprintf(関数が定義されているため非ゼロ)、これまでの部分式は0です。
  • ~ビットごとの補数です。指定された 2 進数のすべてのビットを反転します。与えられているので0、これを返し0xffffffffます。
  • その結果はx、16 進数で格納され、出力されます。

64 ビット マシンでは0xffffffffffffffff、完全にはわかりませんが、代わりに が表示される場合があります。

于 2013-07-25T17:10:08.540 に答える