为何`long long typedef ll`与`typedef long long ll`效果相同?
为什么
long long typedef LL;在C++中能正常运行? 这其实是C++声明语法的特性——声明中的说明符顺序可以灵活调整。
在C++的语法规则里,typedef属于「存储类说明符」(和static、extern这类关键字归为一类),而long long是「类型说明符」。这两类都属于声明语法里的「说明符序列(decl-specifier-seq)」,序列里的各个说明符的顺序并不影响最终的声明效果。
也就是说:
typedef long long LL;是把typedef放在类型说明符前面long long typedef LL;是把类型说明符放在typedef前面
这两种写法本质上是等价的,都是将LL定义为long long的别名。
之所以平时很少见到第二种写法,纯粹是因为大家约定俗成的编码习惯——通常会把typedef放在最前面,可读性更强。但从语法层面来说,这两种写法都是完全合法的。
内容的提问来源于stack exchange,提问作者Владимир Миленковић
相关产品推荐
相关产品推荐

