看板 C_and_CPP 關於我們 聯絡資訊
推文說的有問題的地方還沒改 是這一段: ※ 引述《BlackMatrix (BlackMatrix)》之銘言: : int left = eval (r->left); : int right = eval (r->right); 在這邊就先 eval r->left 和 r->right 是有風險的 因為好死不死 r->element 是 '~' 的話 int left = eval(r->left); 就掛了 (因為 r->element 是 '~' 時, 他的資料是放 right, left 沒有東西) 解決方式很多, 其中之一就是先判定 element 是什麼 再去處理接下來的 eval 和算出 return value 比如說: switch(r->element) { case '&': left = eval(left); right = eval(right); ret_value = left && right; break; case '|': left = eval(left); right = eval(right); ret_value = left || right; break; case '~': // 這裡 left 沒存資料, 不能 eval(left); right = eval(right); ret_value = ! right; break; default: break; } return ret_value; : char op = r->element; : if (op == '&') : { : return(left*right); : //if it's true, then it gives me 1, if it's false, then it gives me 0 : } : else if (op == '|') : { : if ((right == 1) ||(left == 1)) : { : return 1; : } : else if ((right == 0) || (left == 0)) : { : return 0; : } : } : else if (op == '~') : { : if (right == 1) : return 0; : else if (right == 0) : return 1; : //改掉了, 因為只有right有東西 : } : } -- 有時候,遺忘,是令人快樂的。什麼時候?當然是有人傷了你的心的時候。  存心傷你的那個人,固然是故意和你過不去,但是被傷了心而耿耿於懷的你  ,卻是和自己過不去了。所以,記性不好的人,通常會是比較快樂的人,也  是比較不容易被擊倒的人。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.50 ※ 編輯: ledia 來自: 140.112.30.50 (11/14 09:34)
BlackMatrix:原來是這樣, 我終於做出來了~~~~太感謝了~~~ 11/14 10:44
BlackMatrix:謝謝 11/14 10:44