首頁  >  文章  >  後端開發  >  【求指教】为什么PHP的这2个加法运算结果为什么都是3?

【求指教】为什么PHP的这2个加法运算结果为什么都是3?

WBOY
WBOY原創
2016-06-23 14:24:40860瀏覽

<?php $a = 1;$c = $a+$a++;var_dump($c); // result:3$a = 1;$c = $a+$a+$a++;var_dump($c); //result:3


我的理解:第一个结果应该是2,第二个结果应该是3
打印输出:
int 3int 3


回复讨论(解决方案)

按照 php 的语法说明,你的理解是正确的
而实际运行结果却不是这样的,于是你可以认为这是 php 的一个 bug
只是这个 bug 也可能是有意为之,因为 C 语言中就是这样的

按照 php 的语法说明,你的理解是正确的
而实际运行结果却不是这样的,于是你可以认为这是 php 的一个 bug
只是这个 bug 也可能是有意为之,因为 C 语言中就是这样的

谢谢版大!发帖之前看过您以前回复过的帖子 http://bbs.csdn.net/topics/390571704,但是还是不懂,所以又发了一下,谢谢~~

按照 php 的语法说明,你的理解是正确的
而实际运行结果却不是这样的,于是你可以认为这是 php 的一个 bug
只是这个 bug 也可能是有意为之,因为 C 语言中就是这样的

版主,C中好像不是这样哦:

#include<stdio.h>int main() {    int a = 1;    printf("a=%d\n",a+a++);    a = 1;    printf("a=%d\n",a+a+a++);    return 0;}


输出:
a=2a=3

你这是 C++,我说的是 C


按照 php 的语法说明,你的理解是正确的
而实际运行结果却不是这样的,于是你可以认为这是 php 的一个 bug
只是这个 bug 也可能是有意为之,因为 C 语言中就是这样的

版主,C中好像不是这样哦:

#include<stdio.h>int main() {    int a = 1;    printf("a=%d\n",a+a++);    a = 1;    printf("a=%d\n",a+a+a++);    return 0;}


输出:
a=2a=3

奇怪。。我这也不是C++呀

怎么发现好多个帖子都讨论这种问题。

维基百科:
在计算机编程中,未定义行为(英语:Undefined behavior)是指行为不可预测的计算机代码。这是一些编程语言的一个特点,最有名的是在C语言中。[1]在这些语言中,为了简化标准,并给予实现一定的灵活性,标准特别地规定某些操作的结果是未定义的,这意味着程序员不能预测会发生什么事。

怎么发现好多个帖子都讨论这种问题。

维基百科:
在计算机编程中,未定义行为(英语:Undefined behavior)是指行为不可预测的计算机代码。这是一些编程语言的一个特点,最有名的是在C语言中。[1]在这些语言中,为了简化标准,并给予实现一定的灵活性,标准特别地规定某些操作的结果是未定义的,这意味着程序员不能预测会发生什么事。

又学到了很多,谢谢!!!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn