C 标准(5.1.2.2.1 Program startup)说:
程序启动时调用的函数名为 main。[...]
它应定义为返回类型为 int 且不带参数:
int main(void) { /* ... */ }
或使用两个参数[...]:
int main(int argc, char *argv[]) { /* ... */ }
后来说:
argc 的值应为非负数。
- 为什么不应该
argc
被定义为一个unsigned int
,argc
据说意思是“参数计数”? - 应该
argc
用作argv
?
所以我开始怀疑 C 标准是否说明了数组索引的类型。签了吗?
6.5.2.1 数组下标:
其中一个表达式的类型应为''<em>pointer to object type'',另一个表达式应为整数类型,结果的类型为''<em>type''。
它没有说明它的签名(或者我没有找到它)。使用负数数组索引 ( ) 的代码很常见,array[-1]
但这不是未定义的行为吗?
- 数组的索引应该是无符号的吗?