实际上,我错误地键入了下面的语句,但编译器允许我执行语句而不会抛出任何错误.我的代码是,
unsigned i=3;
Run Code Online (Sandbox Code Playgroud)
为什么gcc
允许分配值而不提供数据类型?这是什么gcc
方式有效?
从C11
标准的章节§6.7.2,类型说明符,类型说明符列表显示为,
......
-int
,signed
或signed int
-unsigned
,或unsigned int
......
和"语义学"说,
每个以逗号分隔的多个集合都指定相同的类型,......
所以,基本上,unsigned
并且unsigned int
指的是相同类型并且可以认为是可互换的.
同样的逻辑适用于int
,signed
和signed int
.
那么,回答你的问题,
为什么gcc编译器允许在不给出数据类型的情况下分配值?
unsigned
本身是一个类型说明符,与...相同unsigned int
.所以,基本上,这里不缺少数据类型.