C语言运算符的结合性
C语言中运算符结合性到底啥意思?比如说x=A+B+C.结合性用在相同优先级的对吧?也就是说A+B+C,然后左结合意思是先计算左边的?也就是B属于左边的加号?所以叫左结合吗...
C语言中运算符结合性到底啥意思?比如说x=A+B+C. 结合性用在相同优先级的对吧?也就是说A+B+C ,然后左结合意思是先计算左边的? 也就是B属于左边的加号?所以叫左结合吗?如果只是A+B,或者A+B*C这个不涉及到结合性对吧?
换种表述:就是结合性是指A+B中,+左结合,所以先跟A,再跟B。还是A+B-C中,因为+、-左结合,所以B跟+结合?或者两种说法都不对?
楼下回答的-A+B这种有问题吧,-(负号)本身优先级高,所以这个不涉及到结合性吧?我的理解。 展开
换种表述:就是结合性是指A+B中,+左结合,所以先跟A,再跟B。还是A+B-C中,因为+、-左结合,所以B跟+结合?或者两种说法都不对?
楼下回答的-A+B这种有问题吧,-(负号)本身优先级高,所以这个不涉及到结合性吧?我的理解。 展开
4个回答
展开全部
结合性是规定运算符与运算数组合成表达式的结合方向。因为运算符是有优先级别的,表达式的运算应该是先按运算符的优先级由高到低的顺序,结合运算数进行计算,当遇到同级别运算符或者是符号一样但运算目数不同时,就要用到运算符的结合性。
例如:X=-B+C 或 X=A-B+C与X=A-B*C两个表达式计算时是这样的
对于X=-B+C,表达式运算时是这样的,先数据栈读入X,符号栈读入=(赋值运算符),因为=是双目运算符,还要读入数据,所以继续向后读表达式;又读到-号,不是数据,而且-号的运算级别高于=号,所以-号进入符号栈,继续向后读表达式,读到数据B进入数据栈,这时候-B就符合负号运算符的自右向左结合的单目运算,就进行求值运算,符号栈中-号出栈,与数据栈中B结合成-B,-B就变为一个新的运算数据进入数据栈;后面继续读入+号,它是双目运算符后面还要读入一个运算数据,C就读入了数据栈,后面没有运算符再读入,表达式结束,那么就进行符号栈+号和数据栈中C和-B的值相加,将结果存入数据栈中,符号栈中+出栈;符号栈中还有=号,它和数据栈中的结果与X形成赋值的自右向左双目结合运算,表达式的结果就此运算完毕。
对于X=A-B+C与X=A-B*C两个表达式计算时,前面X=A-B过程是相同的,只是后面,由于*号比+号的运算级别高,所以表达式X=A-B*C中要先算B*C的结果,在一步一步回退进行A-和X=的运算。而表达式X=A-B+C中+号与-同级别,所以当满足运算条件时就先进行A-B运算,然后进行+C和X=的运算。
不知道以上的说明,是否能让你明白C语言中运算符结合性和表达式求值的过程。
例如:X=-B+C 或 X=A-B+C与X=A-B*C两个表达式计算时是这样的
对于X=-B+C,表达式运算时是这样的,先数据栈读入X,符号栈读入=(赋值运算符),因为=是双目运算符,还要读入数据,所以继续向后读表达式;又读到-号,不是数据,而且-号的运算级别高于=号,所以-号进入符号栈,继续向后读表达式,读到数据B进入数据栈,这时候-B就符合负号运算符的自右向左结合的单目运算,就进行求值运算,符号栈中-号出栈,与数据栈中B结合成-B,-B就变为一个新的运算数据进入数据栈;后面继续读入+号,它是双目运算符后面还要读入一个运算数据,C就读入了数据栈,后面没有运算符再读入,表达式结束,那么就进行符号栈+号和数据栈中C和-B的值相加,将结果存入数据栈中,符号栈中+出栈;符号栈中还有=号,它和数据栈中的结果与X形成赋值的自右向左双目结合运算,表达式的结果就此运算完毕。
对于X=A-B+C与X=A-B*C两个表达式计算时,前面X=A-B过程是相同的,只是后面,由于*号比+号的运算级别高,所以表达式X=A-B*C中要先算B*C的结果,在一步一步回退进行A-和X=的运算。而表达式X=A-B+C中+号与-同级别,所以当满足运算条件时就先进行A-B运算,然后进行+C和X=的运算。
不知道以上的说明,是否能让你明白C语言中运算符结合性和表达式求值的过程。
TableDI
2024-07-18 广告
2024-07-18 广告
Excel一键自动匹配,在线免费vlookup工具,3步完成!Excel在线免费vlookup工具,点击4步自动完成vlookup匹配,无需手写公式,免费使用!...
点击进入详情页
本回答由TableDI提供
2014-03-15
展开全部
运算符的结合性分为 自左向右 和 自右向左 两种方向。另外还有考虑运算符的优先级。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
运算符:用于c语言中执行程序代码运算
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是你说的这样的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询