运行以下代码:
int main()
{
int a = sizeof(signed) + sizeof(unsigned);
int b = sizeof(const) + sizeof(volatile);
printf("%d",a+++b);
return 0;
}
在visual c ++中,我得到的输出为16. signed
,unsigned
,const
和volatile
的默认数据类型是int
吗?
答案 0 :(得分:4)
不仅仅是这些限定符,C语言的默认类型是 int 。因此,如果您未在某个位置指定数据类型,编译器将假定 int 。
例如,如果你没有声明一个函数并使用它,编译器会给你一个警告,并假设函数返回int。
答案 1 :(得分:4)
首先:sizeof
不是一个函数,它是一个运算符。如果它是一个函数,你会如何实现它?你不能,这是重点。
是的,这些限定符的默认类型是int
。
答案 2 :(得分:1)
你的程序不是标准C:
int a = sizeof(signed) + sizeof(unsigned);
是的,好的,signed
和int
实际上是unsigned
和unsigned int
的同义词。
int b = sizeof(const) + sizeof(volatile);
这些在C中是不允许的。从历史上看,可能有一段时间将这些解释为int
,但你不应该依赖它,你的编译器应该哭。
printf("%d",a+++b);
我甚至拒绝查看应该如何解析它以及结果应该是什么,因为这与问题无关。