• 締切済み

C言語のscanf文について

C++言語の勉強中で、ビット演算子のところで質問です。 動作は、キーボードから16進データを入力して、そのデータの3,4ビット目を0にした時のデータを算出するというものです。 ここでProgram中の scanf 文にてエラーが出てしまいます。 ①%X(16進数)の型がintに対して、ope変数がcharとなっている。  ⇒ここの整合を取るためにはどういう方法がありますでしょうか? 以下がProgramです。 /*************************************************************/ /* プログラム:ビット演算子 */ /* 動作内容 :ビット演算子によりビット操作する */ /* 入力データの3,4ビット目を0にした値を算出する */ /**************************************************************/ #include<stdio.h> int main(void) { unsigned char ope; unsigned char ans; printf(" Hex-Data : "); scanf("%X", &ope); printf(" ope : 0x%02X\n", ope); ans = ope & 0xe7; /* 3,4ビット目:0 */ printf(" ope & 0xe7 = 0x%02x\n", ans); getchar(); getchar(); return(0); }

みんなの回答

  • BuriBuri4
  • ベストアンサー率28% (150/525)
回答No.3

スタックサイズのズレは処理系によっては致命的なバグになりますので素直にunsigned int ope ; で宣言すればよいと思います。 ans = ope & 0xe7;/* 3,4ビット目:0 */ 3,4ビット目 … (;´Д`) 0xe7 = 0b11101111

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

>scanf 文 ちなみに文ではなくて関数です。

回答No.1

ope と ans の変数の型を char ではなく int にすれば良い。

関連するQ&A