4

宣言してもfloat a=5.6出力printf("%d",sizeof(!a))します2。整数のサイズを出力するのはなぜですか?

4

4 に答える 4

10

演算子は!整数型を返しますintsizeof(int) == 2どうやらあなたのアーキテクチャに。

于 2013-06-30T10:03:41.267 に答える
3

演算子はオペランドの!型を返しません。に対して NOT を実行するとfloat、返されませんfloatint初期の の論理的に反対の値を持つを取得しfloatます。

于 2013-06-30T10:05:39.070 に答える
2

https://stackoverflow.com/a/9833830/1787973によると、!Eと同等で0==Eあり、結果として、タイプintです。

論理否定演算子 ! の結果 オペランドの値が 0 と等しくない場合は 0、オペランドの値が 0 と等しい場合は 1 です。結果の型は int です。式 !E は (0==E) と同等です。

sizeof(int)16ビットアーキテクチャでは2であり、コンピューターでsizeof(!a)出力2される理由を説明しています。

于 2013-06-30T10:29:16.517 に答える
-1

これは役に立ちます。

void main(){
    int x = !4.3;
    printf("%d",x);//This will print 0
    printf("%d",sizeof(0));//This will print 2
    printf("%d",sizeof(!4.3));//Will print 2
}

!4.30 が返されることがわかります。したがってsizeof(!4.3)= sizeof(0)= 2(0 は整数であるため) sizeof(!4.3)2 になります。

于 2013-06-30T10:05:35.210 に答える