c++ - 为什么 argc 是 'int' (而不是 'unsigned int' )?

标签 c++ c command-line

为什么命令行参数计数变量(传统上是 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/

相关文章:

c++ - 为什么指针从函数返回之前的值

c - Raspberry Pi - 通过 PCF8574 IOExpander 连接基于 HD44780 的 20x4 LCD

c - 使用 fork 和 exec 执行程序

c++ - 如果键相同,如何使用其值对 map 元素进行排序?

c++ - 类初始化顺序

c - 如何查询根证书?

unix - 有没有办法忽略 UNIX 排序中的标题行?

eclipse - 命令行构建的最佳实践

svn - 将 trunk 复制到没有 trunk 文件夹的标签

java - 是否可以在 android studio 中编写纯 java/c++ 程序