精華區beta Visual_Basic 關於我們 聯絡資訊
優先順序相等的運算子,規則是由左至右... 但是 ? 2^2^3 = (2^2)^3 '由左至右,沒有問題 True ? 2^2^3 = 2^(2^3) '反過來運算結果一定不一樣。 False ? 2^-2^3 = (2^-2)^3 '加了一個負號,運算結果卻錯了? False ? 2^-2^3 = 2^(-2^3) '為什麼變成由右至左了呢? True -- VB 程式設計 倉木麻衣 PTT 星爺板 行列輸入法 ====================================================== Visual_Basic MaiKuraki Stephen Array -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.58.156.43
TrueFeeling:我也覺得驚奇@@!!220.141.158.129 06/12
fumizuki:除了這個問題外,可以再試試看還有沒有其它問題 210.58.156.43 06/12
fumizuki:2^(-2)^3 這樣就會符合由左至右的規則... 210.58.156.43 06/12
fumizuki:不過指數(^)運算子的優先等級比負數(-)來得高.. 210.58.156.43 06/12
fumizuki:還是無解 ~.~ 210.58.156.43 06/12
> -------------------------------------------------------------------------- < 作者: fumizuki (小獅子) 看板: Visual_Basic 標題: Re: [討論] 奇怪的現象 時間: Sun Jun 12 15:30:15 2005 我發現到了, 當指數運算子 (^) 之後遇到正負號 (+/-),正負號會先與後方的運算式結合@@" (限定「*」「/」「^」「\」「Mod」) ? 2 ^ +3 ^ 2 ^ 2 * 2 = 2 ^ (+3 ^ 2 ^ 2 * 2) True ? 2 ^ +3 ^ 2 ^ 2 / 2 = 2 ^ (+3 ^ 2 ^ 2 / 2) True ? 2 ^ +3 ^ 2 ^ 2 mod 2 = 2 ^ (+3 ^ 2 ^ 2 mod 2) True ? 2 ^ +3 ^ 2 ^ 2 \ 2 = 2 ^ (+3 ^ 2 ^ 2 \ 2) True 所以加減及邏輯運算子不會被結合... ? 2 ^ +3 ^ 2 ^ 2 + 2 = 2 ^ (+3 ^ 2 ^ 2) + 2 True ? 2 ^ +3 ^ 2 ^ 2 - 2 = 2 ^ (+3 ^ 2 ^ 2) - 2 True ? 2 ^ +3 ^ 2 ^ 2 And 2 溢位 ? 2 ^ (+3 ^ 2 ^ 2) And 2 溢位 還有,負號後的結束終止條件就是加減及邏輯運算子,所以... ? 2 ^ +3 ^ 2 ^ 2 ^ -2 * 3 = 2 ^ (+3 ^ 2 ^ 2 ^ (-2 * 3)) False 這是我目前研究出來的結果...配合 vb 研究小站的討論,得到的答案 先這樣,看看還有沒有誰有更清楚的解釋 ~.~ 很奇特的結合方式 ~.~ -- VB 程式設計 倉木麻衣 PTT 星爺板 行列輸入法 ====================================================== Visual_Basic MaiKuraki Stephen Array -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.58.156.43
TrueFeeling:要開始考試了,可能要等考完才來研究一下^^220.141.158.129 06/12
> -------------------------------------------------------------------------- < 作者: fumizuki (小獅子) 看板: Visual_Basic 標題: Re: [討論] 奇怪的現象 時間: Mon Jun 13 12:01:21 2005 換個排列方式,這應該算是結論了吧!? 2 ^ +3 * 2 = 2 ^ (+3 * 2) 2 ^ -3 * 2 = (2 ^ -3) * 2 2 ^ +3 ^ 2 ^ 2 * 2 = 2 ^ (+3 ^ 2 ^ 2 * 2) 2 ^ -3 ^ 2 ^ 2 * 2 = 2 ^ (-3 ^ 2 ^ 2) * 2 2 ^ +3 ^ 2 ^ 2 + 2 = 2 ^ (+3 ^ 2 ^ 2) + 2 2 ^ -3 ^ 2 ^ 2 + 2 = 2 ^ (-3 ^ 2 ^ 2) + 2 2 ^ +2 ^ 1.1 ^ 2 ^ +2 * 2 = 2 ^ (+2 ^ 1.1 ^ 2 ^ (+2 * 2)) 2 ^ -2 ^ 1.1 ^ 2 ^ -2 * 2 = 2 ^ (-2 ^ 1.1 ^ 2 ^ -2) * 2 2 ^ +2 ^ 1.1 ^ 2 ^ -2 * 2 = 2 ^ ((+2 ^ 1.1 ^ 2 ^ -2) * 2) 2 ^ -2 ^ 1.1 ^ 2 ^ +2 * 2 = 2 ^ (-2 ^ 1.1 ^ 2 ^ (+2 * 2)) 當指數後方遇上正號,會先與後方的指數(^)、乘(*)、除(/)、整除(\)、餘數(Mod) 結合,但不與加(+)、減(-)、邏輯運算子結合。 當指數後方遇上負號,只會與後方的指數(^)結合,不會與其它運算子結合。 -- VB 程式設計 倉木麻衣 PTT 星爺板 行列輸入法 ====================================================== Visual_Basic MaiKuraki Stephen Array -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.222.155.162