0

私はコーディングしていましたが、次のコードでは目的の出力が得られません。pos&1 は、pos を 2 で割ったときに余りを返すことになっています。pos&1 を pos%2 に置き換えると、すべて正常に動作します。何が問題なのですか?

#include <iostream>
using namespace std;
int main(){
    int y;
    unsigned long long int pos;
    cin>>y;
    cin>>pos;
    int f=0;
    while(y>0){
        y--;
        if(pos&1==0){
            f=1-f;
        }
        pos=pos/2;
    }
    if(f==1){
        cout<<"blue\n";
    }
    else
    cout<<"red\n";
    return 0;
}
4

1 に答える 1

11

1==0よりも優先されpos&1ます。試すif((pos&1)==0){

于 2013-10-28T09:37:15.927 に答える