昨夜、私の友人は次のような状況を教えてくれました。
c/c++ では、次のような 2 行のコードを記述します。
int a = 0;
printf("%d\n", 1 << -1);
printf("%d\n", 1 << (a-1));
2 つの異なる結果があるのは驚くべきことです。前は 0 で、もう 1 つは -2147483648 です。
理由はわかりませんが、どなたでも助けていただけます。
どんな言葉でも大歓迎です。
昨夜、私の友人は次のような状況を教えてくれました。
c/c++ では、次のような 2 行のコードを記述します。
int a = 0;
printf("%d\n", 1 << -1);
printf("%d\n", 1 << (a-1));
2 つの異なる結果があるのは驚くべきことです。前は 0 で、もう 1 つは -2147483648 です。
理由はわかりませんが、どなたでも助けていただけます。
どんな言葉でも大歓迎です。