C言語なら俺に聞け(入門編)Part 78

このエントリーをはてなブックマークに追加
195デフォルトの名無しさん
何かパタッと書き込みが止まったなw

自作自演してたのはほとんど◆QZaw55cn4cだったってオチ?
196デフォルトの名無しさん:2011/02/08(火) 21:18:46
◆QZaw55cn4cを擁護する書き込みは◆QZaw55cn4c本人によるもの
普段トリップを外さないのは他人を装いやすくするため
197デフォルトの名無しさん:2011/02/08(火) 21:34:34
Q、恥ずかしい過去(>>71>>76)を消すにはどうしたらいいですか?
A、スレッドを流せばいい

Q、連投すると荒らし扱いされる危険もあるのでは?
A、◆QZaw55cn4cをダシに使えばいい
198デフォルトの名無しさん:2011/02/08(火) 21:38:11
Q、さすがにバレバレでは?
A、突っ込む奴=◆QZaw55cn4cでおk
199デフォルトの名無しさん:2011/02/08(火) 22:00:13
インクリメントについて調べても理解できなかったので質問です
#include<stdio.h>
void main()
{
int a,b;
a = 2;
b = 2;
printf("a=%d , a++=%d , ++a=%d\n",a,a++,++a);
printf("a=%d \n",a);
printf("b=%d , ++b=%d , b++=%d\n",b,++b,b++);
printf("b=%d \n",b);
}

このプログラムで、aとbで数字が微妙に違うんですがなぜですか
順番が関係してるのはわかりますが詳細希望です
200デフォルトの名無しさん:2011/02/08(火) 22:01:27
>>199
>printf("a=%d , a++=%d , ++a=%d\n",a,a++,++a);
>printf("b=%d , ++b=%d , b++=%d\n",b,++b,b++);

こんな風に変数呼び出しに複数の引数を指定した場合はその評価順序については
規定がないから
201デフォルトの名無しさん:2011/02/08(火) 22:05:16
ぱぁぷぅ
202デフォルトの名無しさん:2011/02/08(火) 22:05:31
共通の変数使うなよ未定義になるから
203デフォルトの名無しさん:2011/02/08(火) 22:06:32
>>199
1行で複数の副作用が発生する場合、どの順番で処理するのかは環境依存。
その例で言えば、決まった結果になるのはaとbの最終的な値のみ。
204デフォルトの名無しさん:2011/02/08(火) 22:06:33
>>200
規定がないってことは環境によってもでてくる数値が違ってくる可能性があるってことですか
205デフォルトの名無しさん:2011/02/08(火) 22:08:51
>>203で出てました失礼
ありがとうございました
206デフォルトの名無しさん:2011/02/08(火) 22:11:38
1行って説明をそのまま額面どおりとっちまいそうな調子だな
207デフォルトの名無しさん:2011/02/08(火) 22:19:11
これかな
§6.5.2.2.
10 The order of evaluation of the function designator, the actual arguments, and
subexpressions within the actual arguments is unspecified, but there is a sequence point
before the actual call.
208デフォルトの名無しさん:2011/02/08(火) 22:19:15
>>199について
◆QZaw55cn4c、 コメントをどうぞ
209デフォルトの名無しさん:2011/02/08(火) 22:20:16
要するに引数の評価順序に依存する部分は関数呼び出しの外に出せって事だな
210デフォルトの名無しさん:2011/02/08(火) 22:41:08
197 :デフォルトの名無しさん:2011/02/08(火) 21:34:34
Q、恥ずかしい過去(>>71>>76)を消すにはどうしたらいいですか?
A、スレッドを流せばいい

Q、連投すると荒らし扱いされる危険もあるのでは?
A、◆QZaw55cn4cをダシに使えばいい


198 :デフォルトの名無しさん:2011/02/08(火) 21:38:11
Q、さすがにバレバレでは?
A、突っ込む奴=◆QZaw55cn4cでおk