-1

C 言語でのコード。

#include<stdio.h>
#define PRODUCT(x) ( x * x * x)
int main()
{
  int i =5,k;
  k = PRODUCT( ++i );
  printf("i is :%d ",k);
  return 0;
}

私の質問はなぜですかi: 392? 私によると、出力は336. (なぜなら6 * 7 * 8 = 336)

私はここで本当に台無しですか??

4

1 に答える 1

3

前処理されたコードには

( ++i * ++i * ++i)

同じ変数での2つの実行の間にシーケンスポイントが不足しているため、未定義の動作が発生します。

于 2013-08-29T12:51:27.880 に答える