<分区>
Possible Duplicate:
Undefined Behavior and Sequence Points
手工编写以下代码:
#include <stdio.h>
int func (int a, int b) {
static int c = 1;
return a + b * (c *= -1);
}
int main () {
int a = 2, b = 3;
int c = func(a, b);
a *= a++;
b *= ++b;
printf("%d %d %d %d\n", a, b, c, func(a, b));
}
我计算 printf()
中的变量如下:
a = 5, b = 16, c = -1, func(a, b) = -11
但是我的编译器告诉我最后一个值实际上是 21。
输出:
a = 5, b = 16, c = -1, func(a, b) = 21n
我会将我的值计算为 (16*-1) + 5
谁能告诉我哪里做错了?