こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

'\200'って何?

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

投稿日時 - 2008-07-24 12:04:14

QNo.4200304

すぐに回答ほしいです

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

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

これはその通りです。

投稿日時 - 2008-07-24 15:44:51

お礼

ありがとうございました。

投稿日時 - 2008-07-24 18:55:04

ANo.3

このQ&Aは役に立ちましたか?

41人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

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

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

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

投稿日時 - 2008-07-24 12:47:10

お礼

ご回答ありがとうございます。
入手先は
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

ANo.1

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

投稿日時 - 2008-07-24 12:33:25

お礼

ご回答ありがとうございます。
なるほど8進数表記だったわけですね・・。
ありがとうございます。よくわかりました。

投稿日時 - 2008-07-24 14:26:13

あなたにオススメの質問