zoukankan      html  css  js  c++  java
  • 被C语言操作符优先级坑了

        今天有一个枚举的题目的代码是这样的: 

        重点在于maxXor这个函数的实现,枚举两个数字,其中maxr保存了最大值的 i 异或 j , 可是这个程序执行结果大大出乎意外-_-. 然后就把 i 异或 j 的结果临时保存在int,进行比较,程序正确的执行了。原来是被操作符优先级坑到了。位操作的优先级比比较操作符的优先级更低。

        

    #include <map>
    #include <set>
    #include <list>
    #include <cmath>
    #include <ctime>
    #include <deque>
    #include <queue>
    #include <stack>
    #include <bitset>
    #include <cstdio>
    #include <limits>
    #include <vector>
    #include <cstdlib>
    #include <numeric>
    #include <sstream>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    /*
     * Complete the function below.
     */
    int maxXor(int l, int r) {
        int maxr = -1;
        for(int i = l;i <= r;i++) {
            for(int j = i;j <= r;j++) {
                if( i^j > maxr ) {
                    maxr = i^j;
                }  
            }
        }
        return maxr;
    }
    
    int main() {
        int res;
        int _l;
        cin >> _l;
        
        int _r;
        cin >> _r;
        
        res = maxXor(_l, _r);
        cout << res;
        
        return 0;
    }
  • 相关阅读:
    在IDEA中使用maven
    使用IDEA创建JavaWeb项目 部署本地tomcat并运行
    Java
    c++
    Vue学习
    svn 小程序地址
    SVN 上传代码
    eclipse插件 --js
    https抓包
    eclipse 断点位置发生莫名其妙的位移
  • 原文地址:https://www.cnblogs.com/weixliu/p/3927952.html
Copyright © 2011-2022 走看看