程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c語言自增自減++ -- 詳解

c語言自增自減++ -- 詳解

編輯:關於C語言

 C語言自增自減運算符總結
【例】
int i=5, j=5, p, q;
p = (i++) + (i++);
q = (++j) + (++j);
printf("%d, %d, %d, %d\n", i, j, p, q);
i=5;
j=5;
p = (i++) + (i++) + (i++);
q = (++j) + (++j) + (++j);
printf("%d, %d, %d, %d\n", i, j, p, q);
i=5;
j=5;
p = (i++) + (i++) + (i++) + (i++);
q = (++j) + (++j) + (++j) + (++j);
printf("%d, %d, %d, %d\n", i, j, p, q);
i=5;
j=5;
p = (i++) + (i++) + (i++) + (i++) + (i++);
q = (++j) + (++j) + (++j) + (++j) + (++j);
printf("%d, %d, %d, %d\n", i, j, p, q);
【講解】
在VC6.0下編譯,運行。
這段程序的運行結果是
7, 7, 10, 14
8, 8, 15, 22
9, 9, 15, 22
10, 10, 25, 41
可見a++這類運算,是整個式子算完以後,統計一下有幾個++,再統一給a加上幾。而
++a這類運算,在2個以下的時候,是先統計下有幾個++,然後都加上去,然後再進行賦值。超過兩個了,那麼第三個開始,就是分步來,前兩個算完了,第三個把前面得到的值拿來用。所以,q = (++j) + (++j) + (++j); (j=5)q就等於7+7+8=22.
總結一句話:vc環境中: ++i++i先使i的值自增兩次再賦值! i++i++先賦值再使i的值自增兩次!
【注意】
自增自減運算符的對象是變量,不是常量或表達式。如+ + i + + +j就不合法。 這是因為 C 語言的編譯器對程序編譯時,從左到右盡可能多地將字符組成一個運算符或標識符,因此 + + i + + +j 等效於 + + ( i + + ) + j , 第 1 個 “ + + ”作用的對象是表達式 “i + + ” 這是不允許的。

作者“記錄點滴”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved