2016-12-06 6 views
1

私はCコースワークに取り組んでおり、入力としてcharを取得する必要があり、その文字のASCII値をint変数に格納したいと考えています。私は、これは次のように行うことができます知っている:文字のASCIIコードをC言語で整数に格納する方法は?

int main() 
{ 
    int x; 
    scanf("%c", &x); 
    printf("%d\n",x); 
} 

ここでの問題は、私は有効-Wformatではgccでこのプログラムをコンパイルする時はいつでも、私はこの警告を得ることです:

Warning: format ‘%c’ expects argument of type ‘char *’, but argument 2 has type ‘int *’ 

仕様によると、コースウェアの中には、コンパイラの警告がある場合には、私はいくつかのマークを失うでしょう。だから、コンパイラの警告なしで私が望むタスクを実行できる他の方法はありますか?私の実際のプログラムで


、私は、配列内のスキャンと私はまた、文字の範囲外となり、他の整数を格納する必要があるので、私は正しくchar x

+2

どうすればいいですか? – Iluvatar

+0

[整数変数に文字のASCII値を入力する方法は?](http://stackoverflow.com/questions/22536095/how-to-get-a-character -ascii-value-in-a-integer-variable) –

+0

@Iluvatar実際には、私は配列をスキャンしていて、charの範囲外になる他の整数も格納する必要があるので、 'char x'は – Razin

答えて

3
int main() 
{ 
    signed char x; 
    scanf("%c", &x); 
    printf("%d\n",x); 
} 

を使用することはできませんxをcharとして定義することですが、intも同様に動作します。

Charは、任意のASCII文字を保持できるデータ型、つまり少なくとも127の可能な値であるとC規格で定義されています。記号は重要ではなく、指定されていません。

charを整数として使用する必要がある場合は、実行する内容に応じて、signed charまたはunsigned charのいずれかで定義するのが最適です。

一方、は、printf%dが予期しているように、型変換によって入力署名付き文字を整数に変換するため、正確に機能します。

関連する問題