假设你在C语言中有x = exp1 + exp2。它可能是通过首先计算exp1再计算exp2并将结果相加来评估的,但也可能先计算exp2。
如何找出哪个表达式先被计算?我想要根据先计算的表达式使x等于1/2。
有什么想法吗?
假设你在C语言中有x = exp1 + exp2。它可能是通过首先计算exp1再计算exp2并将结果相加来评估的,但也可能先计算exp2。
如何找出哪个表达式先被计算?我想要根据先计算的表达式使x等于1/2。
有什么想法吗?
好的,你可以这样做:
#include <stdbool.h>
#include <stdio.h>
static int first(int value)
{
static bool first = false;
if (!first)
{
first = true;
return value;
}
return 0;
}
int main(void)
{
const int x = first(1) + first(2);
printf("got %d\n", x);
}
1
。#include <stdio.h>
int func(void)
{
static int x=0;
return x++;
}
int main (void)
{
printf("%d", func() << func());
}
这将会给出 0<<1 == 0
(从左到右)或者 1<<0 == 1
(从右到左)。但是这样的代码没有实际用途。