为什么命令行参数计数变量(传统上是 argc
)是 int
而不是 unsigned int
?这有技术原因吗?
在尝试摆脱所有已签名的未签名比较警告时,我总是忽略它,但从不明白为什么会这样。
最佳答案
原来的 C 语言在默认情况下任何变量或参数都被定义为 int 类型,这可能是另一个因素。换句话说,您可以:
main(argc, char* argv[]); /* see remark below... */
而不是
int main(int argc, char *argv[]);
编辑:实际上,正如 Aaron 提醒我们的那样,最原始的语法应该类似于
main(argc, argv) char **argv {... }
因为“原型(prototype)”是后来才引入的。这大约是在每个人都记录了至少 10 个小时来追踪与类型相关的微妙(而不是那么微妙)的错误之后
关于c++ - 为什么 argc 是 'int' (而不是 'unsigned int' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1773897/