为什么gcc编译器允许在不给出数据类型的情况下分配值?

Kal*_*yan 2 c gcc

实际上,我错误地键入了下面的语句,但编译器允许我执行语句而不会抛出任何错误.我的代码是,

unsigned  i=3;
Run Code Online (Sandbox Code Playgroud)

为什么gcc允许分配值而不提供数据类型?这是什么gcc方式有效?

Sou*_*osh 5

C11标准的章节§6.7.2,类型说明符,类型说明符列表显示为,

......
- int,signedsigned int
- unsigned,或unsigned int
......

和"语义学"说,

每个以逗号分隔的多个集合都指定相同的类型,......

所以,基本上,unsigned并且unsigned int指的是相同类型并且可以认为是可互换的.

同样的逻辑适用于int,signedsigned int.

那么,回答你的问题,

为什么gcc编译器允许在不给出数据类型的情况下分配值?

unsigned本身是一个类型说明符,与...相同unsigned int.所以,基本上,这里不缺少数据类型.