即使我们声明float a=5.6
thenprintf("%d",sizeof(!a))
输出2
。为什么它输出整数的大小?
问问题
1393 次
4 回答
10
!
运算符返回一个整数类型,可能是int
。sizeof(int) == 2
显然,在你的架构上。
于 2013-06-30T10:03:41.267 回答
3
!
运算符不返回操作数的类型。如果你在 a 上执行 NOT float
,你将不会得到float
回报。您将得到一个int
与 initial 逻辑相反的值float
。
于 2013-06-30T10:05:39.070 回答
2
根据https://stackoverflow.com/a/9833830/1787973,!E
它等同于0==E
,因此,它是 type 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.3
会返回一个 0。因此sizeof(!4.3)
= sizeof(0)
= 2
(因为 0 是一个整数)所以sizeof(!4.3)
会是 2 。
于 2013-06-30T10:05:35.210 回答