-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)

在同一变量上的两次执行之间缺少序列点导致未定义的行为

于 2013-08-29T12:51:27.880 回答