• ベストアンサー

参考書3冊調べましたが!? 説明がありません!?

 型    大きさ     記憶出来る範囲  char   1バイト   1文字-128~127  何で文字は”数字”ではないの・記憶できる範囲で!-128から始まっているのですか!!?? 文字のマイナス - の範囲はどんな概念なのでしょうか!?  宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>何で文字は”数字”ではないの・記憶できる範囲で!-128から始まっているのですか!!?? そのような説明もありですが、数字として、0~255という解説でもOKです。また、その0~255を数字とみなすか、文字とみなすか?は、プログラムを設計した人が決めることです。 コンピュータからすれば、文字も数字も同じビットの並びです。 >>文字のマイナス - の範囲はどんな概念なのでしょうか!? 文字として扱う場合、基本的にプログラマさんは、文字データですから、マイナスという考えは持ちません。 ただ、C言語の場合は、読み込んでいるファイルの最後を意味する値として、特別なケースとして(-1)を扱うことはあります。

Campus2
質問者

お礼

 ご回答真にありがとうございました。 A:数字として、0~255という解説でもOKです。  >>文字のマイナス - の範囲はどんな概念なのでしょうか!? A:文字として扱う場合、基本的にプログラマさんは、文字データですから、マイナスという考えは持ちません。   ・・・特別なケースとして(-1)を扱うことはあります。   以上納得です。  

その他の回答 (6)

  • usa3usa
  • ベストアンサー率33% (20/59)
回答No.7

型    大きさ     記憶出来る範囲 char   1バイト   1文字-128~127 の意味するところは以下の通りです。 ーーーーーーーー char型は、記憶領域1バイト(8ビット)の大きさで記憶され、256通りの値を記憶できます。 256通りの値をどのように使うかは利用者(プログラマ)次第ですが、 アルファベットであれば大文字小文字をあわせても256通り以内なので記号を含めて1文字の記憶に使えます。また数値を記憶させるとした場合、0から255までの256通りとして記憶する場合や、-128から127までの256通りとして記憶すると場合が一般的です。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.6

質問の内容以前に書き方はもっと考えようよ.... 例えば「参考書3冊調べましたが!?」の「!?」にはどのような意味があるんですか? あるいは「記憶できる範囲で!」の「!」にはいかなる意図が込められているのですか? あと, 厳密に言えば char で「記憶できる範囲」は -128~127 とは限らない (処理系による) ので注意.

Campus2
質問者

補足

御回答になっていないような・・

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.5

>何で文字は”数字”ではないの・記憶できる範囲で!-128から始まっているのですか!!?? 「数字」と「数値」は区別しないとヘンにハマるかもしれないのでご注意を。 char型の変数に入れられる文字はASCIIで1文字分。 # 日本語の漢字1文字ではないのでご注意を。 で、その際に数値として入れられるのは符号付きだと負数の128から正数の127までの値。 符号なしだと正数の0から255までの値(符号がないので負数は入れられない)となります。 >文字のマイナス 文字ではなく符号の表現でしかないです。

Campus2
質問者

お礼

ご回答真にありがとうございました。    以下なんとなく理解できそうです。 A:「数字」と「数値」は区別しないとヘンにハマるかもしれないのでご注意を。  文字ではなく符号の表現でしかないです。   まだ・まだ・コンピュータの仕組みがいまいちなので・すこしづつ・理解を深めたいと思います^^

  • tsunji
  • ベストアンサー率20% (196/958)
回答No.4

ここでいう文字は1バイト文字=ASCIIコード(半角文字)のことを指します。 http://www12.plala.or.jp/mz80k2/electronics/ascii/ascii.html 1バイトは8ビットですから表現できる数字は符号なし(unsigned char型)なら0~255までですが、 符号付き(char型)にすると-128~127となるのです。

  • wormhole
  • ベストアンサー率28% (1619/5653)
回答No.3

charは文字ではないです。 intやlongと同じく整数型です。 文字を表すのに都合がいいのでcharを使っているだけです。

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.2

それって・・・どんな本に書いてあったんですか? リファレンスマニュアルを見たほうがいいですよ。 取り敢えずANSI規格準拠の書籍は買っておいたほうがいいです。 たとえば、こういうの↓ http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9EC-%E7%AC%AC2%E7%89%88-ANSI%E8%A6%8F%E6%A0%BC%E6%BA%96%E6%8B%A0-B-W-%E3%82%AB%E3%83%BC%E3%83%8B%E3%83%8F%E3%83%B3/dp/4320026926 「記憶できる範囲」でマイナスが使われているのは符号ビット付きの場合。符号ビットでない考え方なら0~255です。 http://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E4%BB%98%E6%95%B0%E5%80%A4%E8%A1%A8%E7%8F%BE

関連するQ&A

  • C++型変換

    型変換が難しいです。 デバッグやフォームへ文字を表示するのに型変換で躓いています。 charからstringとやBYTEからstringなど相互変換の需要はあまりないのでしょうか? char2stirngとか一式どこかにないですか? そもそもMicrosoftがこう言った型変換を簡単にするのを提供しないのはなぜでしょう? VBはあまり意識せずできていたので、VBからするとメッセージボックスに文字や数字を出すだけでも一苦労です。

  • 全角日本語について

     全角日本語はchar型を2つ連続で続けて出力しないといけませんよね。半角だと1バイトですむところを2バイト使っているわけですけど。半角と全角が入り混じったテキストから的確に1文字ずつ取り出すことは出来ないのでしょうか?(2バイトずつ取り出すと、半角のところで文字化けになってしまいますし、1バイトずつだと全角のところが文字ばけしますよね。)半角の時は、半角を、全角の時は全角をという風に。。。  あと、全角の日本語を一文字として扱う型は何かないでしょうか。いつも、charの配列でchar[0],char[1]として使っているのですが。 ちなみに、windows98でBorlandのTurbo C++を使って、C言語で書いています。 なにとぞ、よろしくおねがいします。

  • 変数 および ポインタのサイズ(バイト数)について

    sizeof演算子を使ってchar int float double型のバイト数を調べると、char 型については1バイトと決まっていて、int float doubleについては2から8バイト(処理系によって違う)なのは理解できます。しかし、char* int* float* double*型(ポインタ型)のバイト数は2から4バイトになるのが多いとおもいますが、どういう理由でポインタ型のバイト数が決まるのか、その理由をお教え願いたく思います。16ビットcpuあるいは32ビットcpuと言うハードの影響なのかそれとも何かソフトによるのか、その理由を知りたいと思います。なお私の処理系ではポインタは全て4バイトになっています。特に不思議に思うのはchar型は1バイトなのに、char*型が4バイトになっていることです。 宜しく願います。

  • オラクルのデータ型について

    オラクルのデータ型について教えてください。 ものすごく基本的な質問かもしれませんが、今後のことを考えて質問させていただきます。 文字列の型の"CHAR"と"VARCHAR2"についてです。 "CHAR"は固定長で2000バイト、 "VARCHAR2"は可変長で4000バイトとマニュアル等には記載されていますが、 いまいちピンときません。 そこで、それぞれの長所、短所。どのような時にどちらを使用したらいいのか 等をなるべく詳しく教えてもらえないでしょうか? 宜しくおねがいします。

  • C言語で整数を文字列へ型変換

    C言語で整数を文字列へ型変換 int result[11]; const char *tmp; resultの中の11個の数字を 1,2,3,4,5,6,7,8,9,10,11 のような文字列にして、tmpへ代入したんですが、やり方が分かりません。 Cの初心者ですので、教えていただきたいです。

  • C++にてtemplateで受け取った任意の型の変数が何型であるかを判定したい

    環境:VisualStudio2005, WinXP 以下のようなことは可能でしょうか? ・ある型の変数をそれが何型であるかを判定→例えばintとかcharとかchar *とか 概念としてはこんな感じです。 template<class Type> void func( Type a ) {   // 型を判定   switch( GetTypeChack(a) ){   case BOOL:   case INT:   case CHAR:   case FLOAT:     ・     ・   } }

  • 数字の全角文字を調べる

    visual basic 2008に関する質問です。 テキストボックスに入力した文字列の中に、数字の全角文字が 含まれているかどうかをチェックするメソッドはありますか? 下記の内容でビルドすると、エラーとなります。 (ソースより抜粋)--------------------------------------- Dim str As String = TextBox1.Text Dim chr As Char = str.Chars(0) If ((chr >= &H8250) And (chr <= &H8258)) Then Label1.Text = "数字は半角文字で入力して下さい。" End If ------------------------------------------------------- (エラー内容)------------------------------------------- 演算子'>='は、型'Char'および'Integer'に対して定義されて いません。 演算子'<='は、型'Char'および'Integer'に対して定義されて いません。 ------------------------------------------------------- 使用OSは、Windows Vistaです。 質問とあわせて、上記のエラーの対処方法について教えて頂けると 助かります。

  • 文字列の最初の0(ゼロ)を取り除く方法は

    Perlで数字を入力させるフォームから、情報を取り込んでいますが、00012のような場合、頭の0(ゼロ)を取り除いて、データとして保存したいんですが、どうすればよいのでしょうか。 また、変数の内容が文字列、整数、実数というような取り扱いは出来ないのでしょうか。データの型の概念がよく分かりません。

    • 締切済み
    • CGI
  • ファイル操作について。

     ファイルのテキストの中の文字列はどのような型で宣言されているか、 わかる人がいたら教えてください。  例えば、fopenでFILE宣言しているstreamにおとして、streamの中から1文字を とる時にfgetcでintのiに入れますよね。この文字をprintするときに%cとやったら ここで、型がint→charに変わってちゃんと表示されるのはわかるのですけれど、SJISの日本語2バイトからなっている物ではそれぞれの情報をi[0],i[1]に格納してそれぞれをchar型に変換して連続して表示しなければならない。そうすると、intが16ビットだとすると(32ビットの時もあるらしいので)、テキストファイルでは1文字が16ビット連続で表されているはずなのに、streamから16bitずつひっぱて8bitに直してから、また、連続して表示しなければ、出力ができないんですよ。  これはテキストファイルからstramのときに1文字の1byteにまた1byteが自動的に てういているように感じるのですけれど、もし、わかる人がいたら教えてください。説明がわかりずらいですけれど。。。。

  • char*型の文字列をchar[10]へ。

    char*型の文字列をchar[0]から順番に格納したいのですが、 どうやってやるかご存知の方おられますでしょうか。 申し訳ございません、宜しくお願い致します。

専門家に質問してみよう