Objective-C [ObjC part:4];

このエントリーをはてなブックマークに追加
555デフォルトの名無しさん
>>553
>>551の2行目のようにchar型のデータが欲しいだけなら何もすることは無いので char c; c = 48; で十分だ。
もし3行目のように文字列として扱いたい場合でも今の場合なら一文字目 '0' == 48 と二文字目の '\0'
の分だけなので char c[2]; でよい。
それにchar c[2] = {0} のように書いた場合、2要素目以降は言語仕様上不定(実装上はほぼ確実に0にセットされるが)。
556デフォルトの名無しさん:2009/11/23(月) 08:36:27
なんだそんな話か
char c[4096];
とか平気でやってるぞ
557デフォルトの名無しさん:2009/11/23(月) 09:17:42
なんと愚かな!
558デフォルトの名無しさん:2009/11/23(月) 10:41:38
>>555
なーるほど。そういうことなら問題なっすぃん。
なんか48 61 65 71みたいな数値を文字列に直すのかなーとか思って多めにとっただけっすぃん。
559デフォルトの名無しさん:2009/11/23(月) 11:04:11
>555
悪意がないことを先にいっておく
>char c[2] = {0} のように書いた場合、2要素目以降は言語仕様上不定
なる理由はどこから
気になったので、規格書があればそのセクションをお願いします
560デフォルトの名無しさん:2009/11/23(月) 11:54:05
>>559
俺も気になったんで見たんだけど、
C99?だと、静的変数と同様の暗黙の初期化になるみたい。
それ以前のは規格書が見れない。
http://www.jisc.go.jp/
JISX3010のPDF96ページ辺り。
561デフォルトの名無しさん:2009/11/23(月) 12:36:40
>560
確認しました
確かに静的記憶域と同じと書いてありますね
562デフォルトの名無しさん:2009/11/23(月) 15:43:49
American National Standard Programming Language C
3.5.7 Initialization
Semantics
If there are fewer initializers in a list than there are members of
an aggregate, the remainder of the aggregate shall be initialized
implicitly the same as objects that have static storage duration.
563デフォルトの名無しさん:2009/11/24(火) 14:02:14
おまいら静的変数と同じとか遠回しなこと言ってないで、
>>555 は間違いで
char c[2] = {0}の様に書いた場合 2 要素目以降は c 言語の
仕様として 0 にセットされる、とストレートに指摘しろyo