トップページ > プログラム > 2014年12月14日 > qF8SNqwq

書き込み順位&時間帯一覧

20 位/205 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000010000010000010003



使用した名前一覧書き込んだスレッド一覧
名無しさん@そうだ選挙に行こう
デフォルトの名無しさん
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net

書き込みレス一覧

【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
191 :名無しさん@そうだ選挙に行こう[sage]:2014/12/14(日) 08:25:23.41 ID:qF8SNqwq
>>174
>int型に引き渡しても問題ないという感覚ですか?

理由が3つ。
一つはその通りです。
二つ目は、C標準関数にはcharの代替でintを用いる関数があるため
それに合わせたと考えられます。
すべてのchar値に加えEOFなど特別な値も表現させるためです。
三つ目は、printfなどの可変個引数の関数に渡す際には
自動的にintに変換されて渡されるため
それに何となく合わせたのだと思われます。

しかしここで少し問題があります。
charが符号付きの処理系ではそのままintに変換すると
C標準ライブラリでの文字のint表現と互換のない表現になります。
例えば
char ch = (char)'\xFF'; //0b1111'1111(マイナス1)
はintにすると
~0 // 0b11111'1111'…1'11111'1111(マイナス1)
になりますが、これはfgetcなどの表現0x000000FF(255)と違うのです。
これはstr_char内部でstr[i]==cを評価する際のstr[i]に合わせたものですが、
あまり使われる表現ではありません。
まあ間違いではないと思います。
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
199 :名無しさん@そうだ選挙に行こう[sage]:2014/12/14(日) 14:41:03.55 ID:qF8SNqwq
>>189
どうでもよいけれど
× printf("%d\n", sizeof('a')); // 未定義動作
○ printf("%zu\n", sizeof('a'));
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
206 :デフォルトの名無しさん[sage]:2014/12/14(日) 20:43:09.83 ID:qF8SNqwq
【制限】「sizeof(type)」が32767を超える処理系では使わないでください
例:
struct s {char x[1024LL*1024*1024*2]};
printf("%d", (int)sizeof(struct s));//oops...


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。