3

unsigned int x =-1; unsigned int に負の整数を割り当てることはできますか?のビット表現は何ですか?

#include<stdio.h> 
int main(){
    unsigned int x = -1; 
    int y = ~0; 
    if(x == y) 
        printf("same"); 
    else
        printf("not same"); 
    return 0;
}

出力:

同じ

そして、どのように可能ですか、xは署名されていません

#include<stdio.h> 

int  main()     
{

unsigned int x = -4; 
if (x == -4)
   printf("true");
else 
   printf("FALSE");
}

出力:

真実

4

3 に答える 3

2

そして、どのように可能ですか、xは署名されていません

これは「通常の算術変換」です。両側のオペランドの==型は異なるため、最初に同じ型に変換する必要があります。型が符号のみによって異なる場合の int 以上の型のルールは、符号なしが勝つということです。したがって、これは、符号なし整数に-4割り当てたときと同様に、符号なしの同等の値に変換されます。-4

詳細については、二項演算子の両側の符号が異なる場合、プロモーション ルールはどのように機能しますか?を参照してください。

于 2014-09-30T18:29:46.730 に答える