char型とint型について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Lemon
記事: 1
登録日時: 1年前

char型とint型について

#1

投稿記事 by Lemon » 1年前

現在データ型を学んでいます。
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;
}

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: char型とint型について

#2

投稿記事 by みけCAT » 1年前

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

box
記事: 2002
登録日時: 13年前

Re: char型とint型について

#3

投稿記事 by box » 1年前

int型は必ず符号付き、char型が符号付きかは環境による、という違いもあります
unsigned int
って型、なかったでしたっけ?当方の勘違いかな?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

返信

“C言語何でも質問掲示板” へ戻る