我有以下 C 代码:
#include <stdio.h>
int x = 2;
int f (int z) { int temp = x; x += 2*z; return temp; }
#define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) /* side effects may cause error */
int MIN_fix(X,Y) { if (X < Y) return X; else return Y; }
int main () {
unsigned char b = 0x3, c = 0x1;
printf("result> %d, %d\n", MIN(b+c, f(3)), MIN_fix(b+c, f(3)));
}
为什么我得到“结果> 4, 2”应该是 8 而不是 4?