C语言中左结合性与右结合性,在运算中怎么体现?
比如这么一个程序:#include<stdio.h>voidmain(){intx=1,i=5,s;s=i+++x++;printf("x=%di=%ds=%d\n",x...
比如这么一个程序:
#include<stdio.h>
void main()
{
int x=1,i=5,s;
s=i+++x++;
printf("x=%d i=%d s=%d\n",x,i,s);
}
能给我分析一下它的具体运算吗? 展开
#include<stdio.h>
void main()
{
int x=1,i=5,s;
s=i+++x++;
printf("x=%d i=%d s=%d\n",x,i,s);
}
能给我分析一下它的具体运算吗? 展开
2个回答
展开全部
s=i+++x++;
编译器在读取源码的时候,是先一个一个的读字符,然后根据字符组成一个词,这个过程就是词法分析阶断,如 s = i+++x++;这样的代码,它会首先读取第一个+号,大多数编译器都是”贪心法“取字符,也就是不停的向后取字符,以便组成一个有意义的词。 所以它会继续第二个+,组成++运算符,所以实际的代码就是
s = i++ + x++;
我们知道,后++就是让原来值进行运算,执行完后再加1,所以s的值,实际上就是 s = i + x
编译器在读取源码的时候,是先一个一个的读字符,然后根据字符组成一个词,这个过程就是词法分析阶断,如 s = i+++x++;这样的代码,它会首先读取第一个+号,大多数编译器都是”贪心法“取字符,也就是不停的向后取字符,以便组成一个有意义的词。 所以它会继续第二个+,组成++运算符,所以实际的代码就是
s = i++ + x++;
我们知道,后++就是让原来值进行运算,执行完后再加1,所以s的值,实际上就是 s = i + x
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询