PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   問個基本C的問題 (https://www.pcdvd.com.tw/showthread.php?t=1077289)

X19-TypeIII 2015-05-06 11:07 AM

x+=y+++--z 應該要這樣拆~

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

A級黑豬肉 2015-05-06 11:10 AM

引用:
作者LVKRMD
我想到了

x+= y++ + --z

應該是這樣才對 :D

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

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

應該是這樣解釋

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

:cool:


嚴格上「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)

X19-TypeIII 2015-05-06 11:21 AM

引用:
作者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

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

X_Tiger 2015-05-06 11:21 AM

這麼多 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 一定是這樣

X19-TypeIII 2015-05-06 11:23 AM

引用:
作者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 一定是這樣


握手~~~~~~~~~ :)

X_Tiger 2015-05-06 11:25 AM

引用:
作者X19-TypeIII
握手~~~~~~~~~ :)


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

:) :) :)

A級黑豬肉 2015-05-06 11:26 AM

引用:
作者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... 所以不是在先後順序出錯 :cry:

VincentDX 2015-05-06 11:30 AM

引用:
作者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上一篇回覆的就更清楚了

T磨人改 2015-05-06 11:44 AM

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


那就上烤肉架吧~~ 我想大家都餓了~~~ :D

A級黑豬肉 2015-05-06 12:00 PM

引用:
作者LVKRMD
怪怪的 :flash:

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


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

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


不是喔
y++ 是這個算式之後才會 +1,在這個算式不加
++y 才會是在這個算式先 +1


所有的時間均為GMT +8。 現在的時間是05:32 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。