關於java中的“error: bad operand types for binary operator ”


今天做這個題目的時候(142. O(1) Check Power of 2),遇到一個錯誤“ bad operand types for binary operator '&' ”。

先貼一下代碼:

public class Solution { /** * @param n: An integer * @return: True or false */
    public boolean checkPowerOf2(int n) { // write your code here
         if(n<=0) return false; return (n&(n-1)==0)? true:false; } }

報錯:

       一開始猜到是運算符的問題,但是也排除了。一直覺得是后面的“true”“false”有什么問題,但也發現不了。后來才知道確實是優先級的問題,可能受到賦值(=)運算符的影響,以為&的優先級比“==”大,實際上恰好相反。相對於位運算符,恆等運算符優先級大一點,這樣就導致了“&”左邊是int型,右邊是boolean型,果然基礎的東西還是不能忽視啊!

       所以只要把“ return (n&(n-1)==0)? true:false;” 改為“return ((n&(n-1))==0)? true:false;”就好了。

      另附一張百度的java運算符優先級表:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM