• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の例文)

C言語の例文:短い行数で判定式を表すプログラム

このQ&Aのポイント
  • C言語の例文を使って、短い行数で判定式を表すプログラムを作成する方法を教えてください。
  • C言語の勉強中に、以下の判定式をシンプルなプログラムで表現したいです。
  • 短い行数で判定式を表すためのC言語の例文を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#208507
noname#208507
回答No.2

こういうのも. static const int table[] = { 0, -3, -2, -2, -1, -1, -1, 0, 0, 0, 1, 1, 1, 2, 2, 3 }; e = table[Move_data >> 4];

Nossu
質問者

お礼

テーブルにすることで非常に短く作ることが判り、勉強になりました。ありがとうございます。

その他の回答 (2)

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.3

質問のコードでは Move_data が全てのcaseに当てはまらない場合の e は不定ですね。 ある程度規則的だから Move_data から e を計算する手があります。 ただし、両端の 0x10 と 0xF0 は規則から外れるから、その部分だけ別にするかな switch(Move_data){  case 0x10:   e=-3;   break;  case 0xF0:   e=3;   break;  default:   e=(((Move_data>>4)-1)/3)-2; };

Nossu
質問者

お礼

ご回答ありがとうございました。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

switch(Move_data){ case 0xF0: e= 3; break; case 0xE0: case 0xD0: e= 2; break; case 0xC0: case 0xB0: case 0xA0: e= 1; break; case 0x90: case 0x80: case 0x70: e= 0; break; case 0x60: case 0x50: case 0x40: e= -1; break; case 0x30: case 0x20: e= -2; break; case 0x10: e= -3; break; }

Nossu
質問者

お礼

ご回答ありがとうございました。

関連するQ&A