解決済み

'\200'って何?

  • すぐに回答を!
  • 質問No.4200304
  • 閲覧数183
  • ありがとう数44
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 36% (188/520)

strcmpを実装してみようと調べてみると、文字コードの比較は
unsigned charで行わないといけないと書いてありました。
それは'\0'と'\200'の比較を考慮してということだったんですが、
後者の意味がわかりません・・。
一応文字コードを表示させてみると-128、unsigned charで128でした。
この文字コードは一体何を意味するのでしょうか?

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

  • 回答No.3

ベストアンサー率 26% (845/3158)

> unsignedで比較しなければならないことには変わりないのでしょうか?

これはその通りです。
お礼コメント
Directxq

お礼率 36% (188/520)

ありがとうございました。
投稿日時 - 2008-07-24 18:55:04

その他の回答 (全2件)

  • 回答No.2

ベストアンサー率 26% (845/3158)

> それは'\0'と'\200'の比較を考慮してということだったんですが、

その情報をどこで入手したのか分かりませんが、strcmpが各文字をunsigned charとして比較しなければならないことと直接の関係はありません。

各文字を、符号付きとして扱う場合と符号無しとして扱い場合では、0~SCHAR_MAXの範囲に収まらない文字が含まれる場合の比較結果が異なることはお分かりかと思います。
しかし、char型のビット数はCHAR_BITマクロで定義される値であり、標準では8以上としか規定されていません。したがって、'\200'という特定の値は関係ありません。
お礼コメント
Directxq

お礼率 36% (188/520)

ご回答ありがとうございます。
入手先は
http://libc.blog47.fc2.com/blog-entry-33.html
http://www.bohyoh.com/CandCPP/C/Library/strcmp.html
特に'\200'の話が出てきたのは
http://www.jp.freebsd.org/cgi/mroff.cgi?sect=3&cmd=&lc=1&subdir=man&dir=jpman-6.0.0%2Fman&subdir=man&man=strcmp
です。
-128が128となるということはわかりました。
ご回答をふまえ、unsignedで比較しなければならないことには変わりないのでしょうか?
投稿日時 - 2008-07-24 14:25:43
  • 回答No.1

ベストアンサー率 42% (926/2160)

'\177' と '\200'を比較する場合
signed charの場合
127 > -128
unsigned charの場合
127 < 128
と結果が違ってしまうのです
8進数の'\200' 16進数で '\x80'は符号の切り替わる文字コードです
お礼コメント
Directxq

お礼率 36% (188/520)

ご回答ありがとうございます。
なるほど8進数表記だったわけですね・・。
ありがとうございます。よくわかりました。
投稿日時 - 2008-07-24 14:26:13
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集

ピックアップ

ページ先頭へ