C语言中左结合性与右结合性,在运算中怎么体现?

2025-03-12 03:42:31
推荐回答(2个)
回答1:

s=i+++x++;

编译器在读取源码的时候,是先一个一个的读字符,然后根据字符组成一个词,这个过程就是词法分析阶断,如 s = i+++x++;这样的代码,它会首先读取第一个+号,大多数编译器都是”贪心法“取字符,也就是不停的向后取字符,以便组成一个有意义的词。 所以它会继续第二个+,组成++运算符,所以实际的代码就是

s = i++ + x++;

我们知道,后++就是让原来值进行运算,执行完后再加1,所以s的值,实际上就是 s = i + x

回答2:

#include
int main()
{
int x=1,i=5,s;
s=i+++x++;
/*
等价于 s = (i++) + (x++);
也就是
s = i + x; // i 和 x 值先用
i++;       // 然后 i 自增
x++;       // 然后 x 自增
*/
printf("x=%d   i=%d   s=%d\n",x,i,s);
}