C++相談室 part78
■ このスレッドは過去ログ倉庫に格納されています
0376デフォルトの名無しさん
2010/02/26(金) 20:04:26#define MAX(x,y) ((x)>(y) ? (x):(y))
int a = 3;
int b = 3;
int m = MAX(a,++b);
はプリプロセッサによって
int a = 3;
int b = 3;
int m = ((a)>(++b) ? (a):(++b));
と展開されます。
結果的に++bが2度評価され、bとmは5になってしまいます。
/*******************************************************/
という記述を見たのですが、標準C++の規格ではbとmは5になるってのは保証されますか?
私には未定義の動作になりそうに見えるのですが。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています