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

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

WBOY
WBOYOriginal
2016-06-23 14:24:40860browse

<?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]在这些语言中,为了简化标准,并给予实现一定的灵活性,标准特别地规定某些操作的结果是未定义的,这意味着程序员不能预测会发生什么事。

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn