現在データ型を学んでいます。
charは文字専用、intは整数専用と書いてありましたが、下のコードはエラーなく動きます。
どういうことなのでしょうか。。。
また、intにも文字を入れられるとしたらchar型は必要なのでしょうか?
#include <stdio.h>
int main(){
int x = 'A';
int y = '1';
char a = 85;
printf("%c%c%c", x, y, a);
return 0;
}
char型とint型について
Re: char型とint型について
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
charもintも、幅(使うメモリの量、扱える数値の範囲)が違うだけで整数型です。
(また、int型は必ず符号付き、char型が符号付きかは環境による、という違いもあります)
コンピュータにおいては、文字に数値(キャラクターコード)を割り当てて扱うことが一般的です。
可変長引数として渡されたchar型の値は、自動的にint型に変換されます。
バイト列を扱いたいのにint型を使ってしまうと、メモリの消費量が4倍になるか、
各バイトにアクセスするのにいちいちビットシフトなどをしないといけない、といった不都合が生じます。
よって、char型も必要と考えられます。
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
そんなこと、どこに書いてありましたか?
charもintも、幅(使うメモリの量、扱える数値の範囲)が違うだけで整数型です。
(また、int型は必ず符号付き、char型が符号付きかは環境による、という違いもあります)
コンピュータにおいては、文字に数値(キャラクターコード)を割り当てて扱うことが一般的です。
printfの書式%cは、int型の値を要求します。
可変長引数として渡されたchar型の値は、自動的にint型に変換されます。
例えばchar型が1バイト、int型が4バイトの環境の場合、
バイト列を扱いたいのにint型を使ってしまうと、メモリの消費量が4倍になるか、
各バイトにアクセスするのにいちいちビットシフトなどをしないといけない、といった不都合が生じます。
よって、char型も必要と考えられます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: char型とint型について
unsigned intint型は必ず符号付き、char型が符号付きかは環境による、という違いもあります
って型、なかったでしたっけ?当方の勘違いかな?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。