1

printBits('A') の出力は 0100 0001 であると想定されますが、0100 0001 0100 1101 0000 0000 を取得しています。以下のコードで問題を理解できないようです。

unsigned char getBit(unsigned char c, int n) {
  return c=(c&(1<<n))>>n;

}


void printBits(unsigned char c) {
  int i=7;
  while(i>=0){
    printf("%d", (getBit(c,i--);
  }
}
4

1 に答える 1

1

出力は入力とうまく一致しているように見えますが、出力は print 関数をさらに 2 回呼び出したことを示しています。出力は、次の一連の呼び出しと一致します。

printBits('A');
printBits('M');
printBits('\0');

これはここに示されています(印刷関数の構文エラーを修正した後)。

于 2013-10-05T19:16:53.963 に答える