首页 > 编程语言 > 详细

被C语言操作符优先级坑了

时间:2014-08-21 20:53:24      阅读:365      评论:0      收藏:0      [点我收藏+]

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

    重点在于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;
}

被C语言操作符优先级坑了,布布扣,bubuko.com

被C语言操作符优先级坑了

原文:http://www.cnblogs.com/weixliu/p/3927952.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!