- 1 名前:デフォルトの名無しさん [2007/02/22(木) 08:16:03 ]
- このスレッドはC言語について、
他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 C使いが優しくコメントを返しますが、 お礼はC言語の布教と初心者の救済をお願いします。 くだすれC言語(初心者用) pc10.2ch.net/test/read.cgi/tech/1153542424/
- 80 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:59:24 ]
- > a=getchar();
getcharはEOFも返すのでint型を返すと宣言されており、実は正解。 EOFの場合を弾いてからchar型として扱うべき > printf("%c\n",a); 可変個引数では全てint以上に拡張されて引数が渡される規則。 char型の値を渡そうとint型の値を渡そうと正常に動いてしまう。 > int a[50]="Hello"; できないという規則になっているからとしか言えない。 int型の配列に文字列を無理やり入れる方法はあるが、 文字列を扱う関数はchar配列、つまりsizeof (char) == 1バイトずつ 文字がメモリに格納されることを前提にコードが書かれているので、 無理にint型の配列にしたところで、正しく動作しない。
- 81 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 14:14:28 ]
- >int a[50] = "Hello";
これは、 int a[50]; a[0] = 'H'; a[1] = 'e'; a[2] = 'l'; a[3] = 'l'; a[4] = 'o'; a[5] = '\0'; とするか int a[50]; for (int ic = 0; a[ic] = "Hello"[ic]; ++ic) ; とすれば実装できなくは無いな。
- 82 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 14:16:54 ]
- int a[50] = {'H', 'e', 'l', 'l', 'o', '\0'}; でいいじゃない
|

|