[過去ログ]
sizeof(char)が必ず1でも、省略すべきではない (683レス)
sizeof(char)が必ず1でも、省略すべきではない http://mevius.5ch.net/test/read.cgi/tech/1187521586/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
201: デフォルトの名無しさん [sage] 2007/08/26(日) 15:47:31 >>198 プログラミング言語C第2版p44(ISBN4-320-02692-6)にはたしかに書いてあるね。 けどプログラミング言語C++第3版(ISBN-4-7561-1895-X)にはそんなこと書いてないよね。 charのサイズに関してはp110で言及してるけど、サイズが1であること、8ビット以上であること、 ほとんどの場合に8ビットバイトであることはかかれてるけど、1バイトとは書いてないよね。 #これよんで9ビットバイトって書いてもいいのかとは確かに思った。 まぁ、何が言いたいかというとcharのサイズが2バイトのC++環境とかだと sizeof(char)をかけてもC++の仕様レベルで必要バイトサイズとれないよなって話。 #mallocの引数はバイト数なんだよね。 Cは厳密な話知らなかったから知らない。 #ちゃんとC++限定で話してたよね。 >>200 ということで、charのバイトサイズをべつに定義しておいてmallocに渡すときはそれを 使ってバイトサイズに変換しろっていうまとめをするとすれ違いにならないかな? http://mevius.5ch.net/test/read.cgi/tech/1187521586/201
204: デフォルトの名無しさん [sage] 2007/08/26(日) 15:56:25 >>201 wikipediaでもなんでも見ればいいだろ。 http://mevius.5ch.net/test/read.cgi/tech/1187521586/204
206: デフォルトの名無しさん [sage] 2007/08/26(日) 16:14:51 >>201 ISO/IEC 14882(C++の規格だ) の5.3.3 Sizeof にこう書いてある。 sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1; http://mevius.5ch.net/test/read.cgi/tech/1187521586/206
209: デフォルトの名無しさん [sage] 2007/08/26(日) 16:24:36 >>207 >charのサイズが2バイトのC++環境とかだと っていう>>201の前提がこれで無くなった っていうだけだよ http://mevius.5ch.net/test/read.cgi/tech/1187521586/209
210: デフォルトの名無しさん [sage] 2007/08/26(日) 16:25:29 >>201後半 それはない。 そうだとすると、malloc(2)の返すポインタが 要素数2つのchar配列として使えないという意味になるではないか。 mallocが使う単位もまた、sizeofと同じ。 http://mevius.5ch.net/test/read.cgi/tech/1187521586/210
212: 201 [sage] 2007/08/26(日) 16:36:27 >>209 いやいや。だから、規格だと1とは書いてあるけどそれが1バイトを意味するって書いてないよねってはなし。 たとえば1=1ワードとかあり得るわけで。昔とかだと1ワード9ビットとか10ビットのマシンってあったしね。 その1ってなんだ? っていうお話。 sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1; じゃなくて、 sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1 byte; ってかいてあるなら自分の言ってることは間違いってことになるけど。 >>210 そうだよ。だから、規格上ではホントにそれが保証できないって言いたいわけ。 malloc(8)の返すポインタが要素数2つのint配列として使えないのと同じってこと。 mallocが使う単位はbyteでsizeofの単位はC++に限って言うならcharのサイズを1とした環境依存。 実用上同じでないと使い勝手が悪いというのならそれには同意。 http://mevius.5ch.net/test/read.cgi/tech/1187521586/212
215: デフォルトの名無しさん [sage] 2007/08/26(日) 16:46:07 >>201 次のネタどうぞ http://mevius.5ch.net/test/read.cgi/tech/1187521586/215
230: 201 [sage] 2007/08/26(日) 19:23:37 >>213 >>214 これは知りませんでした。ご教授ありがとうございます。 たしかにsizeof(char)は常に1で、返すのはバイトサイズだからcharが 2バイトの環境ってあり得ないですね。 勘違いしてました。 >>215 ごめん。 俺の疑問は俺の誤解だったということで解決したから、次のネタはないの。。。 単発と言うことで許して。 http://mevius.5ch.net/test/read.cgi/tech/1187521586/230
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.026s