请求解析PHP中表达式1 + + + 1求值为2的原因
为什么表达式
1 + + + 1 在PHP中求值为2? 嘿,这个问题其实搞懂PHP的运算符优先级和一元加号的作用就迎刃而解了,咱们一步步拆解开来看:
首先得明确PHP里两种
+运算符的区别:- 二元加号:就是咱们日常用的加法,用来计算两个数值的和,比如
1 + 1。 - 一元加号:单个
+放在值的前面,作用是把操作数转换成数值类型——如果本身是正数,结果和原数完全一样(比如+1还是1,+"123"会转成数值123)。
- 二元加号:就是咱们日常用的加法,用来计算两个数值的和,比如
回到你给出的表达式
1 + + + 1,PHP会按照运算符优先级来解析它:
一元加号的优先级比二元加法更高,所以PHP会把后面连续的+都识别为一元加号。实际这个表达式会被解析成:1 + (+(+1))接下来的计算顺序就非常清晰了:
- 先算最内层的
+1,结果还是1; - 再算外层的
+(1),结果依旧是1; - 最后用二元加号计算
1 + 1,结果自然就是2。
- 先算最内层的
举个类似的例子帮你加深理解:如果表达式是1 + + - 1,会被解析成1 + (+(-1)),计算后就是1 + (-1),结果是0,是不是一下子就明白逻辑了?
内容的提问来源于stack exchange,提问作者Rehman Akbar
相关产品推荐
相关产品推荐

