C语言问题提问

来源:百度知道 编辑:UC知道 时间:2024/06/18 17:08:30
设x,y,t均为int型变量,则执行语句;x=y=3;t=++x‖++y;后,y的值为
答案为3.
我的问题是++运算不是从又到左吗?所以应该先计算++y起啊?这样y就应该是4了啊. 按照题目答案来就是从左到右了.

这里考的是这个操作符 ||

这个操作符是“或者”的意思(不知道?再看看书吧)

这个操作符会逐个执行表达式,当碰到一个表达式为真时,整个表达式就为真(不用说为什么了吧),程序就不在继续往下执行

所以在这里,++x的值为4,程序判断整个逻辑表达式++x‖++y为真,不再往下执行了,所以最终y为3

再次回答你,优先级和结合性是两回事

结合性一般只在相同优先级的运算符连写时才起作用.

这是一道“或”运算,表达式首先去算t=++x,求得t的值是4,也就是非0.非0即为真,系统自动跳过右边表达式++y,所以y的值还是3.
你想想数学里的或,只要有一个真,整个表达式就为真,不需要再求表达式的另一边。
懂了吗?