プロが教える店舗&オフィスのセキュリティ対策術

C言語のintとcharの違いってなんですか?単にメモリ領域が違うだけですか?

質問者からの補足コメント

  • intでも文字は出力できますし、charでも整数が出力が出来るので、決定的な違いがわかりません。具体的に教えて下さい!

      補足日時:2017/12/01 01:47

A 回答 (4件)

ただのデータという意味では、単にメモリ領域が違うだけ、もうちょっと言えば1要素で扱えるデータ長の細かさが違います。



ちなみに、char型で許される記法がint型で許されない記法もあります。
char a[] = "koreha char desu"; はOKだけど、
int b[] = "koreha int desu"; はNGみたいな感じです。

int型に無理やり文字列を突っ込もうと思ったら、intのデータ長の中の8ビット単位の各座に工夫して値を突っ込む必要があります。
int b[] = "koreha int desu"; 的なことをしたければ、例えばこんな感じ。
int b[] = { 'k'<<0 | 'o'<<8 | 'r'<<16 | 'e'<<24, 'h'<<0 | 'a'<<8 | ' '<<16 | 'i'<<24, 'n'<<0 | 't'<<8 | ' '<<16 | 'd'<<24, 'e'<<0 | 's'<<8 | 'u'<<16 | 0<<24};

さらにちなみに、ポインタになると下記のどちらもOKです(コンパイル時に警告は出ますが)。
char *a = "koreha char desu";
int *b = "koreha int desu";
これは、ポインタが示す先がどんな型で格納されているかというヒントでしかないためです。
    • good
    • 3

>決定的な違いがわかりません。

具体的に教えて下さい!
 intは処理系に依存し、charは処理系に依存しない
でしょうかね。

例えば、
int i; i=256*256*256; は処理系によってエラーになる場合とならない場合がある。
char j; j=256*256*256;は処理系によらず、エラーになる。

http://www.kusa.ac.jp/~kajiura/c/data/newpage1.htm
    • good
    • 1

大きさ (バイト数) が違うかもしれない. あと int は必ず符号付きだが char は符号なしかもしれない.

    • good
    • 1

int→整数型


char→文字列型
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A