在运行以下代码时:
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
不仅仅是这些限定符,C 语言的默认类型是int。因此,如果您不在某个地方指定数据类型,编译器将假定为int。
例如,如果你没有声明一个函数并使用它,编译器会给你一个警告并假设函数返回 int。
首先:sizeof
不是函数,而是运算符。如果它是一个函数,你将如何实现它?你不能,这就是重点。
是的,这些限定符的默认类型是int
.
你的程序不是标准C:
int a = sizeof(signed) + sizeof(unsigned);
is, ok, signed
andint
实际上是 a areunsigned
和的同义词unsigned int
。
int b = sizeof(const) + sizeof(volatile);
这些在 C 中是不允许的。从历史上看,可能曾经有一段时间,这些也被解释为int
,但你不应该依赖它,你的编译器应该哭泣。
printf("%d",a+++b);
我什至拒绝看这应该如何解析以及结果应该是什么,因为这与问题无关。