- 1 名前:デフォルトの名無しさん [2007/02/01(木) 23:08:46 ]
- このスレは標準Cのみの限定スレです。
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。 質問する前には最低限検索を。 エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。 C FAQ 日本語訳 www.kouno.jp/home/c_faq/ Cプログラマ必読 ・プログラミング言語C(通称 K&R) www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244 他の過去ログはここに nssearch.hp.infoseek.co.jp/clang/ 前スレ 【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130 pc10.2ch.net/test/read.cgi/tech/1159613789/ GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は 専門の別スレッド↓があるのでそこへさようなら。 【初心者歓迎】C/C++室 Ver.34【環境依存OK】 pc10.2ch.net/test/read.cgi/tech/1169039760/ C/C++の宿題を片付けます 82代目 pc10.2ch.net/test/read.cgi/tech/1169575464/
- 33 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 18:13:10 ]
- 数字が出るまで読み飛ばしてるからそれはないと思う
- 34 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 19:44:36 ]
- あー勘違いしてたわ
>>32は見なかったことに
- 35 名前:デフォルトの名無しさん [2007/02/02(金) 22:31:15 ]
- 最高にわろた
- 36 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 22:53:53 ]
- int n = 0;
printf("%d %d", n++, n++); って未定義なの?
- 37 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 22:54:47 ]
- >>36
確か、未定義のハズ。
- 38 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 00:13:24 ]
- 実引数の評価される順が処理系定義なだけだと思うのだが。
- 39 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 01:22:24 ]
- >>36
2つの副作用完了点(シーケンスポイント)の間で同じ値を2回変更しているので、 未定義動作になります。
- 40 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 14:23:51 ]
- sprintfを使ったときstdio.hをインクルードし忘れていて、スタックを壊し
サブルーチンからリターンするアドレスが0x00000000になって、おかしくした俺がきましたよ。 ・・・不思議と1ステップずつデバッガで操作したら吹っ飛ばなかったのだが。
- 41 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 14:50:06 ]
- >>39
それなら printf("%d %d", n+=1, n+=2); みたいなのも未定義?
- 42 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 15:14:43 ]
- >>41
もちろん
- 43 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 16:58:48 ]
- int f(int *n){return (*n)++;}
・・・ printf("%d %d\n", f(&n), f(&n)); は、未定義じゃないよね? 結果は処理系依存だけど。
- 44 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 17:05:31 ]
- いいえ。
- 45 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 17:29:16 ]
- >>43
うん。 return 文の完了にシーケンスポイントがあるので大丈夫。
- 46 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 23:14:24 ]
- 顔文字 (o*。_。)oペコッ ~(=^‥^A アセアセ・・・ とか使う馬鹿に
おまいらよく真面目に答えられるな どう考えてもここはスルーするべき所じゃないのか?
- 47 名前:デフォルトの名無しさん [2007/02/03(土) 23:30:48 ]
- みなさんありがとうございます。
いちおう理解して自分のなかで消化できました・・・ いろいろな助言ありがとうございました。 いいわけなんですが、学校では今までscanf()を使ってたり 簡単な関数で表現をしてきたので いざ自分が社会人になって頑張っていこうと思うと・・・ 自分が使えない人間である とひしひしとわかってきました。 エンジニアという職業は常に勉強ですから 考えることがおおいですが すこしずつ・・・皆さんに近づけるよう がんばりたいとおもいます。 本当にありがとうございました!!!
- 48 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 00:25:52 ]
- >>47
お前は向いてないから諦めた方がいい
- 49 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 00:31:14 ]
- ~(=^‥^A アセアセ
- 50 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 06:53:08 ]
- >>46
そういうおまえはなぜスルーしない。
- 51 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 07:09:08 ]
- スルーしてるじゃんw
- 52 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 18:58:56 ]
- ちっともスルーできてないし、おまけにぶり返している
- 53 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 20:05:59 ]
- スルーは規格外らしい。
- 54 名前:デフォルトの名無しさん [2007/02/05(月) 22:02:11 ]
- value=value*10+c-'0'; /* valueに値を取り込む(この計算式の意味についてはよく考えること) */
わかんね
- 55 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:12:30 ]
- '0'から'9'が連続していることは保証されていますか?
- 56 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:15:24 ]
- 保証されています
- 57 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:17:08 ]
- 規格のどのあたりに書いてるか分かりますか?
- 58 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:17:36 ]
- 保証されていません
- 59 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:18:23 ]
- 規格のそのあたりに書かれています
- 60 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:20:40 ]
- / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
│ │ │ おしえてあげないよ。 ジャン! │ │ │ \_________________________/ V V V _,∩_ _,∩_ _,∩_ (_____)ゝ、 (_____) y (_____) / :: :: :: ヽ 〉 /-‐:: ::‐-ヽ / / :: :: :: ヽ _./ (・ )ll(・ ) ∨ _/ 0) i! 0) ∨ _/ ( ・)i!(・ ) ゙、_ // :: :: ∈ゝ :: ::ヽ // :: ‐-‐ :: ヽ // :: ー一 :: ヽ\ . ゝ/:: :: :: :: :: ::ヽ ゝ/ :: :: :: :: :: ヽ ゝ/ :: :: :: :: :: ヽく  ̄ ̄ | ̄ ̄ | ̄ ̄  ̄ ̄ | ̄ ̄ | ̄ ̄  ̄ ̄ | ̄ ̄ | ̄ ̄ | | | | | | ⊂! !つ ⊂! !つ ⊂! !つ
- 61 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:27:47 ]
- >>57
ja.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange
- 62 名前:デフォルトの名無しさん [2007/02/05(月) 22:31:23 ]
- 分かりません~(=^‥^A アセアセ
- 63 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:31:50 ]
- >>61
Cでは常にASCIIコードが使われると保証されていると?
- 64 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:31:55 ]
- >>61
英語でお願いします。
- 65 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:40:12 ]
- >>63
CではASCIIでなければならないという規定はないが、 基本文字集合で、'0'から'9'がこの順で並んでいなければならないという規定はある。 >>55-63 JIS X3010:2003では5.2.1。ISO/IEC 9899:1999でも同じ位置にあると思う。
- 66 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:46:08 ]
- ねーよw
- 67 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:46:21 ]
- JIS X 3010:2003 抜粋
5.2.1 文字集合 ・・・ ソース基本文字集合及び実行基本文字集合は,少なくとも次に揚げる要素をもっていなければならない。 ・・・ ― 10個の10進数字(digit) 0 1 2 3 4 5 6 7 8 9 ・・・ ソース基本文字集合及び実行基本文字集合の双方において,10進数字に関する上の並びにおいて, 0の右側に並んでいる各文字の値は,一つ左側にある文字の値に比べ1だけ大きくなければならない。 ・・・
- 68 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:49:20 ]
- 保証されています。
- 69 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 23:27:17 ]
- >>67
該当箇所を見て確かに保証されていることは理解出来たのですが、 アルファベットはどうなのですか?書き方が微妙で判断がつきにくいんですが
- 70 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 23:31:33 ]
- さっさと教エロや(゜Д゜#)
- 71 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 23:42:13 ]
- >>69
保証されていません 10進数字以外の文字は一般的に数値との関連性は薄いためでしょう 16進用の文字は大文字小文字の都合で一本化はできませんし ほかに保証されているのは、ヌル文字が全ビットゼロであることだけです
- 72 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 00:12:48 ]
- >71
良く分かりました 詳しい説明どうもありがとう
- 73 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 00:21:34 ]
- 全然わかりません~(=^‥^A アセアセ
- 74 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 00:53:00 ]
- 分からない奴には必要ない事
- 75 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 00:54:26 ]
- ちょっとは文字コード体系見るぐらいしろやおまえら
- 76 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:16:04 ]
- すみません~(=^‥^A アセアセ
- 77 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 03:32:20 ]
- 俺に謝れ
- 78 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 10:20:48 ]
- #defineMOV_SEGTBL_USER(str){\
a->regs.##str##.value= b->##str##.value;\ a->regs.##str##.addr = b->##str##.addr;\ } こういうマクロ作って、例えば。 { a->regs.test.value = b->test.value; a->regs.test.addr = b->test.addr; }; と展開されることを期待したんだけど Emacsのcc-modeのマクロ展開機能だと、うまくこのように展開されてるんだけど コンパイルすると。 "." と "test" を貼付けましたが正常なプリプロセッサトークンとなりません
- 79 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 10:21:30 ]
- ごめん、途中で書き込んじゃった。
>>78の続き というコンパイルエラーが出てコンパイルできない。 どうしたらいい?
- 80 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 10:29:37 ]
- お帰りください(o*。_。)oペコッ
- 81 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 10:53:23 ]
- >>78
正常なプリプロセッサトークンとするために "." と "test" を貼り付けなければいいんだろ。
- 82 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 10:57:06 ]
- >>81
じゃこういうマクロの使い方は出来ないってこと?
- 83 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 10:59:32 ]
- トークン連結演算子はトークンとトークンを連結するんであって
トークンと演算子との間に書いたらおかしくなるのはあたりまえ
- 84 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 11:00:37 ]
- じゃ代替案なにかありませんか?
- 85 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 11:06:05 ]
- ##をはずして代わりにカッコでくくれ
- 86 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 11:08:40 ]
- あ、まちがった
くくるな
- 87 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 11:09:40 ]
- >>85-86
Thx!!
- 88 名前:デフォルトの名無しさん [2007/02/06(火) 14:14:55 ]
- ちょっと文字列比較のベンチマーク取ってみたら
char hoge[] = "BenchMarkTest"; 1: if (strcmp(hoge, "BenchMarkTest") == 0) {} 2: if (hoge[0] == 'B' && hoge[1] == 'e' && hoge[2] == 'n' hoge[3] == 'c' && hoge[4] == 'h' ・・・・・・・・・・続く・・・・・・・) {} コンパイラはgccで最適化オプション -O -O2 -O3 をそれぞれ試した。 2 のほうが全開早いんだけど、そんなもん? 文字列比較は、2の方法で書くべき?
- 89 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 14:16:24 ]
- 暑いですね~(=^‥^A アセアセ
- 90 名前:88 mailto:sage [2007/02/06(火) 14:25:34 ]
- ゴメン、手元にstrcmpのソースあったわww
- 91 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 15:11:42 ]
- お前は全部マシン語で組んでればいいよ
- 92 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 15:13:19 ]
- >>88
たぶん2に最適化かけたら文自体が消えるぞ
- 93 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 15:14:36 ]
- ミシン語って何ですか?(o*。_。)oペコッ
- 94 名前:デフォルトの名無しさん [2007/02/06(火) 15:54:04 ]
- 質問です!
Ⅽ初心者で、今MFCを使用しない前提でプログラムを組んでいます。 そこでMessageBox関数というのを見つけたのですが、 これはMFCとは無関係なのでしょうか?
- 95 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 15:59:59 ]
- 無関係なので使ってかまいません
- 96 名前:デフォルトの名無しさん [2007/02/06(火) 16:00:36 ]
- >>93
わかってると思うけどパソコン自体がI抵抗、コンデンサ 、コイル、ダイオード、トランジスタ等々(意味的には同じ ととらえて良い部分がありますが)でできた回路です。 で、CPU(たぶんメモリも)5V〜0V(正確には0Vに近い小さな電圧) のいんか電圧から、電流が流れています。 この5Vで流れる電流を1とし0Vで流れる電流を0としてCPUの中で の要はダイオードの組み合わせみたいなもので出来た回路で・・・ 説明めんどくせ! 要はマシン語ってのは1と0の羅列。それの事となる。 けど、そんなもん全部理解するには頭の中にパソコンの回路構成 が入ってて、なおかつそれを・・・ 説明めんどくせ! まぁ、アセンブラで書けってことじゃないの?
- 97 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 16:02:56 ]
- わかりません~(=^‥^A アセアセ
- 98 名前:デフォルトの名無しさん [2007/02/06(火) 16:03:44 ]
- >>94
大いに結構!! 他にもいっぱいwin32apiの関数あるから使っていこう。 そして全部覚えよう。そして覚えれたなら、君を神様と呼ばしていただこう
- 99 名前:94 [2007/02/06(火) 16:11:00 ]
- やさしい方ばかりで涙がでそうです;;
ありがとう
- 100 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 16:34:03 ]
- わろた~(=^‥^A アセアセ
- 101 名前:デフォルトの名無しさん [2007/02/06(火) 18:56:34 ]
- >>93
マシン語はアセンブラ言語とほぼ同じとみて差し支えない
- 102 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 20:00:45 ]
- ちょっとスレタイから離れすぎですよ、藻前等。
- 103 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 00:31:48 ]
- ;;;;(;・・)ゞウーン・・・むずかしぃですね
- 104 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 03:25:55 ]
- >>103
初心者向けのスレで揉まれて来ることをお勧めします。
- 105 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 09:58:30 ]
- 遠慮します(o*。_。)oペコッ
- 106 名前:デフォルトの名無しさん [2007/02/07(水) 11:41:37 ]
- [1] 授業単元:数値計算法
[2] 問題文(含コード&リンク):以下の常微分方程式をホイン法で解くためのプログラムを作成しなさい。また 0<=t<=10におけるx(t)およびy(t)のグラフをエクセルで作成しなさい。 dx/dt=2x(t)-0.01x(t)y(t) 初期条件にx(0)=300,y(0)=150 dy/dt=-y(t)+0.01x(t)y(t) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語:c言語 [4] 期限:2007年2月9日まで #include <stdio.h> double func(double x, double y); void heun(double x, double y, double a,double b, int n,double (*f)(double,double)); int main(void) { int n; print("分割数を入力してください--->") scanf("%d",&n); heun(0.0,1.0,0.0,1.0,n ,func); return 0;} void heun(double x, double y, double a, double b, int n, double (*f)(double,double)) { double k1,k2,h; int i; h = (b-x)/n; for (i = 0 ; i<n ; i++) { k1=f(x,y); k2 = f(x+h,y+h*k1); y = y+h/2.0 * (k1 +k2); x = x+h; print("x=%f \t y=%f \n" , x,y);}} ここからどういじるのでしょうか?
- 107 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 11:44:33 ]
- 宿題は宿題スレ逝け
- 108 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 12:00:03 ]
- 分からないんですね~(=^‥^A アセアセ
- 109 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 13:18:43 ]
- 分かる分からない以前の問題だな
- 110 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 13:20:23 ]
- 分かる分からない以前の問題なんですねw~(=^‥^A アセアセ
- 111 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 13:23:22 ]
- 分かる分からない以前の問題だと分かってないのはお前だぜ
- 112 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 13:33:04 ]
- / \ /\ キリッ
. / (ー) (ー)\ / ⌒(__人__)⌒ \ | |r┬-| | 分かる分からない以前の問題だと分かってないのはお前だぜ \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // だっておwwwwwwwwwwwww~(=^‥^A アセアセ | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / バ | | l||l 从人 l||l l||l 从人 l||l バ ン ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
- 113 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 15:18:00 ]
- 次の患者さんどうぞ
- 114 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 15:56:36 ]
- 16歳独身
最近、朝起きるとき、非常に気持ち良い快感で目覚めると パンツがカピカピになってます。 何か尿道あたりに細菌が混入し、病気になっているのでしょうか。 心配で夜もねむれません。まぁ寝れますが。 これはどういった症状なのでしょう。 追伸: 最近SEXという言葉をしりましたが、意味はまだ理解してません。
- 115 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 19:51:18 ]
- / \ /\ キリッ
. / (ー) (ー)\ / ⌒(__人__)⌒ \ | |r┬-| | 分かる分からない以前の問題だと分かってないのはお前だぜだっておwwwwwwwwwwwww~(=^‥^A アセアセ \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // だっておwwwwwwwwwwwww | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / バ | | l||l 从人 l||l l||l 从人 l||l バ ン ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
- 116 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 19:52:57 ]
- ははは・・・~(=^‥^A アセアセ
- 117 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 22:29:42 ]
- 次の患者さんどうぞ
- 118 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 15:42:29 ]
- クラミジアにかかってしまいました
痒いです
- 119 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 16:04:10 ]
- 剃毛した後に消毒用エタノールで綺麗にした後
この抗生剤を飲み、下着を適度に履き替え局部を清潔に保つようにしてください 一週間ほどで良いでしょう
- 120 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:41:05 ]
- >>118
つテトラサイクリン
- 121 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 04:26:29 ]
- >>118
残念だが、もうチンコは諦めてくれ。
- 122 名前:デフォルトの名無しさん [2007/02/11(日) 23:46:18 ]
- ここ数年、仕事でC言語使って開発しています。
動くものは作れるのですが、 設計?構造でいつも悩んでいます。(状態遷移とか。。) 1つのイベントと複数のトリガを管理する定石とか、 状態遷移を管理するときの定石とか まとまった書籍/HPないでしょうか? デザインパターンのように拡張性を考慮した設計が知りたいです。
- 123 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 08:21:44 ]
- 正直、スレ違い。
- 124 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 13:06:15 ]
- int a[42] = {}, b[42] = {0}
配列を0で初期化するのにこの二通りを目にするんだけど、 規格上はどちらも等価ですか?
- 125 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 14:13:00 ]
- 規格上は、{}の中には一つ以上の初期値を書かなければならないことになっている
- 126 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 14:26:14 ]
- なるほど。ありがとうございます
- 127 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 23:27:37 ]
- >125
便乗だけど、その理由が何なのか知りたいのだが。
- 128 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 00:03:24 ]
- >>127
つ【規格でそう決まっているから】 まあマジレスすると、配列(構造体とかもだが)の宣言時の{}は、 複合文のくくりである{}とは違うもので、「初期化子となる式のリスト」を意味する。 (もちろん、中のカンマもカンマ区切りであってカンマ演算子ではない) つまり、「=」が暗示するように、そこには何らかの式が少なくとも1つなければいけない。 ということ。構文上の問題だから、a[42]={}; でもOKなコンパイラもあるだろうけどね。
- 129 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 04:40:04 ]
- = {} だったら、何も代入しないのか、空を代入するのか、よく分かんないんだよな。
- 130 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 13:51:56 ]
- char str[SIZE] = "";
は全部ヌル文字になる?それとも char str[SIZE] = {'\0'}; と書かなきゃダメ?
- 131 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 14:06:56 ]
- >>130
前者後者ともローカル変数であるならば、関数突入時に毎回毎回、0のコピーか代入が発生する。 恐らく前者は、SIZEbyte分""のためのスペースが確保されることになる。 まぁ、全部ナル文字になることを当てにするロジックは推奨できないが。
- 132 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 16:57:45 ]
- memset
- 133 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 17:44:28 ]
- >>130
どっちも同じ。 char配列の文字列リテラルでの初期化は、 下のように1つずつ文字定数を指定したかのように扱われる。
|

|