为什么sizeof(!5.6)给出输出2?

时间:2013-06-30 10:00:50

标签: c sizeof

即使我们声明float a=5.6,然后printf("%d",sizeof(!a))输出2。 为什么输出整数大小?

4 个答案:

答案 0 :(得分:10)

!运算符返回一个整数类型,可能是intsizeof(int) == 2显然是您的架构。

答案 1 :(得分:3)

!运算符不返回操作数的类型。如果您在float上执行NOT,则不会返回float。您将获得int,其初始float的值与逻辑相反。

答案 2 :(得分:2)

根据https://stackoverflow.com/a/9833830/1787973!E相当于0==E,因此属于int类型。

  

逻辑否定运算符的结果!如果其操作数的值不等于0则为0,如果其操作数的值为1则为1   比较等于0.结果类型为int。表达式!E是   相当于(0 == E)。

16位架构上的

sizeof(int)为2,解释了为什么sizeof(!a)会在您的计算机上输出2

答案 3 :(得分:-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.3将返回0.因此sizeof(!4.3) = sizeof(0) = 2(因为0是整数)所以sizeof(!4.3)将是2。