台灣最大程式設計社群網站
線上人數
765
 
會員總數:245006
討論主題:188957
歡迎您免費加入會員
討論區列表 >> C/C++ >> 請問 sum += 1++ 為何???
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問 sum += 1++ 為何???
價值 : 10 QP  點閱數:3400 回應數:5

樓主

小蟲
門外漢
0 2
20 1
發送站內信

請問大大,sum += 1++   是什麼意思??
本篇文章發表於2005-02-05 00:53
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

formosa
捐贈 VP 給 formosa 檢舉此回應
運算過程中有所謂的運算子的先後順序,依照順序來看即可。
本篇文章回覆於2005-02-05 09:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Pitt Chen
捐贈 VP 給 Johnny Chen 檢舉此回應
Dear朋友:
首先我先解譯一下何謂,+是數值運算式、而++是相加的簡捷式。在使用這些一元運算子時有些微的不同,端視於它們是位於運算元的前方或後方。例:$a =1 ; $a++; 或$a =1 ; ++$a; ,以上二個是沒有任何差別的,只是單繼地增加變數的值。有相同的效用。
兩者的差異在於兩個相加運後所傳回的值。所有的運算式均為考式它們都會傳回一個數值。以上的結果其傳回值為1的例子:$a =1 ; $a++; //說明:這是因為後置遞增運算子會先將運算元的值傳回後,而去遞增,所以1++就是1。。而傳回值為2的例子:$a =1 ; ++$a;前置遞增運算子會先遞增後,再傳回遞增後的值。
而我再解譯sum+=的意思就是sum=sum+某個值或變數。
所以你這一個sum+=1++;的意思就是說先將運算元的值傳回後再和sum做相加。答案應該為1。
你應該要這麼寫才可以run喔-> 宣告<?php $sum=0; $a=1; echo sum +=(1++);?>//註我是以php語言來測試,php其實也就是C語言。
本篇文章回覆於2005-02-05 13:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
sum += 1++ 
和下列的東西一樣
sum += 1

sum若一開始為0, 加完以後會變成1
本篇文章回覆於2005-02-05 17:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

formosa
捐贈 VP 給 formosa 檢舉此回應
如果你怕看不懂的話,不如麻煩點,拆開寫•••
縮成那麼短是不錯啦•••但是看觀看上面,不是很佳。
本篇文章回覆於2005-02-05 22:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

小白
捐贈 VP 給 Marcus 檢舉此回應
首先我得提醒大家一下,就是 sum += 1++ 在 GNU C 會發生編譯錯誤。在下文的解說,我會以 i 作解說,而假設 i = 1, sum = 5。

對於任何變數 i ,
i++ 是指先把自己的值傳給別人,再把自己加一;
++i 是指先把自己加一,再把自己的值傳給別人。

sum += i++ 的意義是

   把 sum 這個變數加(先把自己的值傳給別人,再把自己加一)
 = 把 sum 加上原本的 i ,把自己的 i 加一

所以最後執行結果為 sum = 6 , i = 2 。

閣下可以用這個程式作實驗:

#include <stdio.h>
int main(){
   int i,sum=5;
   scanf("%d",&i);
   printf("The value of i is %d.\n",i);
   printf("The value of sum is %d.\n",sum);
   sum += i++;
   printf("The value of i is %d.\n",i);
   printf("The value of sum is %d.\n",sum);
   system("PAUSE");
   return 0;
}

加油!若閣下有任何問題,歡迎主動以 MSN 聯絡我哦:
doraemon2112_mp@msn.com
本篇文章回覆於2005-02-10 15:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.