他のOOP言語とC ++の値によって、タイトルを行うための魔法の事の出現は同じではありません。まず、以下の出力が何であるかを確認するテストを行いますか?
ボイド(F INT、INT B、INT C){ COUT << << B << C。 } int型のmain() { int型、A = 1 。 F( ++、++、++ ); }
私はほとんどが、それは2,2,4であるべきだと思いますね。C#は確かに結果です。C ++が、結果はそうではありません。情報を確認し、明確ではない非常に複雑な、特定のメカニズムに答えるために友人を尋ねます。値によってC ++の関数だけを知っているスタックに基づいてもよいです。
C#とは対照的に、彼は、スタックの右に、左からプッシュし始めました。偉大な神の導きを歓迎異なる意見があります
個別機能場合、このような++のような右側の出力値から開始し、第1の出力の値は、ときの出力値は2になり、++場合、2が再出力となります。しかし、出力++、++両方の場合、++即ち全て、スタックの底部の圧力であります
最後と同じ、以下の実施例における出力の値++:
// 便宜を1に設けられている / * 出力424 なぜならスタックのフロントボトムに対してこの時点で押さ右端++シンボルのプロセスは、2の値となる 中間++シンボルとして、その時点で出力された後には2 3の値の後に この時スタック4となるように、最後の左端++シンボルはフロントを有する トラバースの最終端を両方のスタック解除A出力* / F(+、+、+ )。 // 以下の実施例は、証明するよう // 出力321 °F(A ++、A ++、A ++ ); // 出力344 °F(A ++、A ++、++ A); // 出力444 °F(A ++、 ++、++ A); // 出力222 °F(A、A、++ A); // 出力421 °F(++ A、A ++、A ++)。
だから、複数の番号の場合であれば?以下のように、上記、Bまたはシーケンスを参照してくださいbのを見て、個別に見られますが、その時点彼ら現在の出力値で、どこ+ bを満たすことができます。
//セットA = 1、B = 3。。
// 出力1. 3. 4。 F.(A ++、B ++、A + B); // 。出力6. 1. 3 F(A + B、A ++、B ++ ); // 出力83 3. 1. 5 F(A + B、A ++、B ++、A ++、B ++ ); // 出力3 5 6 4 2。 F.(A ++、B ++、A + B、A ++、B ++)。
サプリメントはCOUTある場合は、次のよう<<最後のコンマ式の出力に応じて出力が可能。
INT A = 1、B = 3 。 // 输出4 COUT <<(++、B ++、+ bの、++、B ++ )。 // 输出5 COUT <<(++、B ++、+ bの、++、++ B)。