为什么我在代码运行的时候(x--)4是先算乘4后减减,(x-1)4是先算-1后乘4,括号的优先级为什么在x--这不适用了,能不能帮我解释一下
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在C#中,运算符确实存在优先级规则,并且括号
()
的优先级是最高的。然而,您提到的表达式(x--)
和(x-1)
并非真正涉及优先级的问题,而是后缀和前缀自减运算符的行为差异。-
后缀自减运算符
--
: 当你使用后缀形式的自减运算符如(x--)
时,它不会立即修改变量x
的值,而是在表达式的当前上下文中先使用x
当前的值,然后才将x
减一。例如,在表达式4 * (x--)
中,会先计算x
当前的值与 4 相乘,之后再将x
减一。 -
简单减法运算
-
: 对于简单的算术表达式(x - 1)
,它是直接将x
与 1 进行减法运算,结果就是x
减去 1 后的值。 -
前缀自减运算符
--x
: 如果你想实现类似(x-1)
的效果(即先减一再参与运算),可以使用前缀自减运算符--x
。这样在表达式4 * (--x)
中,x
先减一,然后再与 4 相乘。
所以,
(x--)
和(x-1)
表达式的行为不同并非因为括号优先级问题,而是由于自减运算符本身的前缀和后缀特性决定的。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用-
悬赏问题
- ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
- ¥15 怎么看我在bios每次修改的日志
- ¥15 python+mysql图书管理系统
- ¥15 Questasim Error: (vcom-13)
- ¥15 船舶旋回实验matlab
- ¥30 SQL 数组,游标,递归覆盖原值
- ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
- ¥20 gitlab 中文路径,无法下载
- ¥15 用动态规划算法均分纸牌
- ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据