a 與 a的區別

2022-08-27 03:57:09 字數 954 閱讀 6534

首先 a++和++a 的定義:看個例子

a:    a=5;  b=++a; // 相當於a=a+1;b=a;  結果是a=6,b=6

b:    a=5;  b=a++; // 相當於b=a;a=a+1; 結果是a=6,b=5

所以書上有:

(1)   如果用字首運算子對乙個變數增1(減1),則在將該變數增1(減1)後,用新值在表示式中進行其他的運算。

(2)   如果用字尾運算子對乙個變數增1(減1),則用該變數的原值在表示式中進行其他的運算後,再將該變數增1(減1)後。

下面某些摘自《c語言深度剖析》

i++ 在遇到每個逗號,分號後,才認為本計算單位已經結束,i 這時候自加。

關於逗號表示式與「++」或「--」的連用,還有乙個比較好的例子:

int x;

int i = 3;x = (++i, i++, i+10);

問 x的值為多少?i的值為多少?

按照上面的講解,可以很清楚的知道,逗號表示式中,i 在遇到每個逗號後,認為本計算

單位已經結束,i 這時候自加。所以,本例子計算完後,i的值為5,x的值為 15。

分析:

++i+++i+++i

由於字尾自增,自減優先順序比字首高(ansi/iso c++中),編譯器等效理解

為++(i++)+(i++)+i,而i++不可以作左值,所以++(i++)錯誤,故此表示式錯誤

a+++++b 編譯器將其理解為(a++)++ +b, 由於a++不可以作左值,所以(a++)++錯誤,故此表示式錯誤

另外特別注意++i在c中不是左值,在c++中才是。在c語言中像 int i=0,a=2,b=3;++i=a+b;這個表示式是非法的。

i++在c和c++中都不能作左值。

與 的區別? 與 的區別?

相同點 和 都是表示與的邏輯運算子,其運算結果一致 不同點 邏輯與 當兩邊的表示式都為true的時候,整個運算結果才為true,否則為false。短路與 當第乙個表示式的值為false的時候,則不再計算第二個表示式 注意 還可以做位運算子,當表示式不是boolean型別的時候 例項1 public ...

this 與this的區別

this 與this的區別 相信很多剛接觸jquery的人,很多都會對 this 和this的區別模糊不清,那麼這兩者有什麼區別呢?首先來看看jquery中的 這個符號,實際上這個符號在jquery中相當於jquery 即 this jquery 也就是說,這樣可以返回乙個jquery物件。那麼,當...

a與 a的區別

首先,來一段 void main int ptr int a 1 printf d,d a 1 ptr 1 列印出來的值為多少呢?這裡主要是考查關於指標加減操作的理解。對指標進行加1操作,得到的是下乙個元素的位址,而不是原有位址值直接加1。所 以 乙個型別為t的指標的移動,以sizeof t 為移動...