PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
X19-TypeIII
Silent Member
 
X19-TypeIII的大頭照
 

加入日期: Mar 2012
文章: 0
x+=y+++--z 應該要這樣拆~

z = z - 1
x = x + (y + z)
y = y + 1
     
      
舊 2015-05-06, 11:07 AM #11
回應時引用此文章
X19-TypeIII離線中  
A級黑豬肉
Advance Member
 

加入日期: Apr 2004
您的住址: 楓葉國
文章: 316
引用:
作者LVKRMD
我想到了

x+= y++ + --z

應該是這樣才對

++ 就是 +1
-- 就是 -1
+= 就是等於的意思

例如 X + 1 可以寫成 x++ 也可以寫成 x+=1
如果是 x+2 就要寫成 x+=2

應該是這樣解釋

X 等於 (y+1) + (-Z)



嚴格上「x+1 可以寫成 x+=1」是不成立的,但「x = x + 1 可以寫成 x += 1」成立。

所以 x+= y+++--z 應該是 x = x + (y++) + (--z)

引用:
作者X19-TypeIII
x+=y+++--z 應該要這樣拆~

z = z - 1
x = x + (y + z)
y = y + 1


應該是
y = y + 1
x = x + (y - z)
 

此文章於 2015-05-06 11:16 AM 被 A級黑豬肉 編輯.
舊 2015-05-06, 11:10 AM #12
回應時引用此文章
A級黑豬肉離線中  
X19-TypeIII
Silent Member
 
X19-TypeIII的大頭照
 

加入日期: Mar 2012
文章: 0
引用:
作者A級黑豬肉
嚴格上「x+1 可以寫成 x+=1」是不成立的,但「x = x + 1 可以寫成 x += 1」成立。

所以 x+= y+++--z 應該是 x = x + (y++) + (--z)



應該是
y = y + 1
x = x + (y - z)


直接丟給程式跑比較快!
int x = 1;
int y = 2;
int z = 3;
x+=y+++--z;
Debug.Log(x);

結果印出5。

z = 3 - 1 = 2
x = 1 + (2 + 2) = 5
y = 2 + 1 = 3

記得++ --先後順序是有差的~

此文章於 2015-05-06 11:22 AM 被 X19-TypeIII 編輯.
舊 2015-05-06, 11:21 AM #13
回應時引用此文章
X19-TypeIII離線中  
X_Tiger
Major Member
 
X_Tiger的大頭照
 

加入日期: Jul 2000
您的住址: 新北市土城區
文章: 200
這麼多 C 高手... Orz

x+=y+++--z

++ 在後整個運算式做完才會 +1, 在左則先 +1
假如 X = 1, Y = 2, Z = 3

X 答案為 5 X = X + (Y) + (Z-1), 做完 Y 再 + 1
Y = 3
Z = 2;

不同的 Compiler 或許會有不同的結果, 但標準 ANSI C 一定是這樣
__________________
......
舊 2015-05-06, 11:21 AM #14
回應時引用此文章
X_Tiger離線中  
X19-TypeIII
Silent Member
 
X19-TypeIII的大頭照
 

加入日期: Mar 2012
文章: 0
引用:
作者X_Tiger
這麼多 C 高手... Orz

x+=y+++--z

++ 在後整個運算式做完才會 +1, 在左則先 +1
假如 X = 1, Y = 2, Z = 3

X 答案為 5 X = X + (Y) + (Z-1), 做完 Y 再 + 1
Y = 3
Z = 2;

不同的 Compiler 或許會有不同的結果, 但標準 ANSI C 一定是這樣


握手~~~~~~~~~
舊 2015-05-06, 11:23 AM #15
回應時引用此文章
X19-TypeIII離線中  
X_Tiger
Major Member
 
X_Tiger的大頭照
 

加入日期: Jul 2000
您的住址: 新北市土城區
文章: 200
引用:
作者X19-TypeIII
握手~~~~~~~~~


我們還真有默契, 同一時間寫同樣原理出來...(握手)

__________________
......
舊 2015-05-06, 11:25 AM #16
回應時引用此文章
X_Tiger離線中  
A級黑豬肉
Advance Member
 

加入日期: Apr 2004
您的住址: 楓葉國
文章: 316
引用:
作者X19-TypeIII
直接丟給程式跑比較快!
int x = 1;
int y = 2;
int z = 3;
x+=y+++--z;
Debug.Log(x);

結果印出5。

z = 3 - 1 = 2
x = 1 + (2 + 2) = 5
y = 2 + 1 = 3

記得++ --先後順序是有差的~


妳說的沒錯... 應該是 x = x + (y + z)
先後順序是會有差,但我剛剛一直把 -- 想成會調換 sign... 所以不是在先後順序出錯
舊 2015-05-06, 11:26 AM #17
回應時引用此文章
A級黑豬肉離線中  
VincentDX
Advance Member
 

加入日期: Aug 2001
文章: 421
引用:
作者X19-TypeIII
直接丟給程式跑比較快!
int x = 1;
int y = 2;
int z = 3;
x+=y+++--z;
Debug.Log(x);

結果印出5。

z = 3 - 1 = 2
x = 1 + (2 + 2) = 5
y = 2 + 1 = 3

記得++ --先後順序是有差的~


基本上micall.lee那樣寫就是對的
原po說錯,我想應該是他忘了y++是要運算完y才+1
X19-TyoeIII上一篇回覆的就更清楚了
舊 2015-05-06, 11:30 AM #18
回應時引用此文章
VincentDX離線中  
T磨人改
Major Member
 

加入日期: Apr 2015
文章: 139
引用:
作者A級黑豬肉
妳說的沒錯... 應該是 x = x + (y + z)
先後順序是會有差,但我剛剛一直把 -- 想成會調換 sign... 所以不是在先後順序出錯


那就上烤肉架吧~~ 我想大家都餓了~~~
舊 2015-05-06, 11:44 AM #19
回應時引用此文章
T磨人改離線中  
A級黑豬肉
Advance Member
 

加入日期: Apr 2004
您的住址: 楓葉國
文章: 316
引用:
作者LVKRMD
怪怪的

x += y++ + --z
轉換成


X = X + (Y++) + (--Z)
1 2+1 + 3-1
1 + 3 + 2

那應該是6才對 怎麼是5呢


不是喔
y++ 是這個算式之後才會 +1,在這個算式不加
++y 才會是在這個算式先 +1
舊 2015-05-06, 12:00 PM #20
回應時引用此文章
A級黑豬肉離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是10:08 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。