ホームページ  >  記事  >  バックエンド開発  >  [アドバイスを求める] 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 である必要があり、2 番目の結果は 3 である必要があります
印刷出力:
int 3int 3


ディスカッションへの返信 (解決策)

php の構文指示によると、あなたの理解は正しいです
しかし、実際の実行結果はこのようにはならないので、これは php のバグであると考えることができます
しかし、C 言語ではこのようになっているため、このバグは意図的なものである可能性もあります

php の構文指示によると、その理解は正しいです
しかし、実際の実行結果はこのようにはならないので、これは php のバグであると考えることができます
しかし、これは C 言語の場合であるため、このバグは意図的なものである可能性もあります

ありがとうございます!投稿する前に、http://bbs.csdn.net/topics/390571704 に返信していただいた投稿を読みましたが、まだ理解できなかったので、もう一度投稿しました、ありがとうございます~~

構文の指示に従ってphp の理解は正しいです
でも、実際の実行結果はこうなっていないので、php のバグだと考えていただいて大丈夫です
でも、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 のバグだと思います
しかし、このバグは意図的なものである可能性もあります。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;}


出力:
すごい
奇妙です。 。私も C++ ではありません

どうしてこの問題について議論している投稿をこれほどたくさん見つけたのでしょうか。

Wikipedia:
コンピューター プログラミングにおいて、未定義の動作とは、予測できない動作をするコンピューター コードを指します。これは一部のプログラミング言語、特に C の機能です。 [1] これらの言語では、標準を簡素化し、実装にある程度の柔軟性を与えるために、標準では特定の操作の結果が未定義であることを特に規定しています。これは、プログラマが何が起こるかを予測できないことを意味します。

この問題について議論する投稿がこれほどたくさんあるのはなぜでしょうか。

Wikipedia:
コンピューター プログラミングにおいて、未定義の動作とは、予測できない動作をするコンピューター コードを指します。これは一部のプログラミング言語、特に C の機能です。 [1] これらの言語では、標準を簡素化し、実装にある程度の柔軟性を与えるために、標準では特定の操作の結果が未定義であることを特に規定しています。これは、プログラマが何が起こるかを予測できないことを意味します。

またたくさんのことを学びました、ありがとう! ! !

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。