【问题标题】:PHP: What is the result of $a+++$a++ [duplicate]PHP:$a+++$a++的结果是什么[重复]
【发布时间】:2020-12-19 23:38:18
【问题描述】:
php > $a = 4;
php > echo $a+++$a++;
php > 9

为什么结果等于9 而不是8

a++ 将增加$a 的值,但返回我在增加之前持有的原始值。所以$a++返回4$a返回4,结果应该是8 = 4 + 4

【问题讨论】:

    标签: php


    【解决方案1】:

    您第一次从 $a++ 获得返回值时,该值将是 4。但第二次将是 5,因为您之前已经增加了它:

    9 = 4 + 5

    $a 的最终值为 6,因为它增加了两次。

    【讨论】:

    • 你的答案是错误的,这个问题必须重新打开并且必须提供正确的解释。而且这个问题不是“增量前与后增量”问题的重复。
    • 我相信我的解释是正确的。这是关于 c/c++ 的先前问题,它提出了类似的问题,并指出了“use-then-change”后增量的效果:stackoverflow.com/questions/1812990/…。 php 文档中也有与此相关的评论:php.net/manual/en/language.operators.increment.php
    • 正如我所说,你完全错了。查看php.net/manual/en/language.operators.precedence.php,示例#2。
    • 如果不是说“你完全错了”,而是提供一些解释来解释为什么会出现这种情况,那将会很有用。链接中的示例 #2 仅证实了我的解释 $a = 1 echo $a + $a++ 将打印 2 或 3。首先评估左侧的 $a: echo 1 + $a++ where $a =1 仍然。因此 echo 1 + 1++ 将回显 2 然后将 $a 增加到 2。或者您首先评估 $a++。 echo $a + ($a++) ==> echo 2 + 1 // 打印 3。在 OP 中,双方都会递增,因此会导致 9 = 4 + 5 或 9 = 5 + 4。无论如何,答案都是 9操作顺序。
    • @user1597430 这是正确的答案。正如@dancingCamel 所说,这里有两个$a++ 运算符,所以先评估哪个并不重要。最终结果将是 4 + 55 + 4,无论哪种方式答案都是 9。更详细地说,$a++ 是一个“后增量”,它将首先返回 $a 然后递增。结果,公式变为echo $a + ($a + 1)。第一个$a++ 将在递增之前返回值$a,第二个$a++ 将返回$a + 1,因为$a 已递增一次。
    猜你喜欢
    • 2019-12-18
    • 2022-12-07
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    相关资源
    最近更新 更多