a++と++aの違いについて、理解する

1053 ワード

一般に、a++は先取値後演算、++aは先演算後取値である.実はここにはいくつかの基本的な概念が含まれています!「演算子」、「式」、「文」の概念を理解しているかどうかを確認します.
++は、接頭辞自己増加(++a)と接尾辞自己増加(a++)の2つの形式の「自己増加演算子」です.
演算子とオペランドを合わせると1つの式(a++、++aはいずれも式であり、aはオペランドである).注:各式自体に値(およびそのタイプ)があり、副作用のある式もあります.たとえば自増表現の副作用は,そのオペランドを自増1させることである.では、自己加算式の値は何でしょうか.a++の値はaの値であり、++aの値はa+1に等しい. 
式の後にセミコロンを付けるのが完全な「文」です.
もう一つの重要な内容は、前述したように操作数を1つ増加させることが自己増加式の副作用であるが、この副作用はいつ発生するのだろうか.正確には「シーケンスポイント」後に発生することを保証します.シーケンスポイントという概念は複雑で、例題の簡単な状況では、この文が終わった後、これらの副作用が発生したに違いないことを知る必要があります.
次の3-3の例題を説明します.
int a = 100; 最初はaが100だった.
a++を印刷します.このprintfはa++の値を印刷します.注意はa++式の値です.私の前の説明を見て、a++の値はaの値、つまり100です.この文が終わるとaの値が1(つまり副作用が発生した)増加することを忘れないでください.
印刷++a;現在aの値は101である.++a式の値を印刷すると、++aの値はa+1に等しいので、102が印刷されます.この文の後a=101+1=102です.
印刷--a;今回は--a式の値を印刷するのは、自増と同じ理屈で、--aの値はa-1に等しいので、101が印刷されます.この文の後a=102-1=101です.
印刷a-;a-式の値がaの値であるため、101が印刷される.この文の後a=101-1=100になります.
印刷a+1;この式は自己増加に関係なく,a+1の値を印刷するだけで101である.a自体の値には影響しません(加算式には副作用はありません).
印刷a;このときaの値はもちろん100です.
Webサイト:http://www.imooc.com/qadetail/83948