如何解决为什么在将负整数传递给接受 unsigned int 的函数时没有收到警告?
如果我写这个函数:
void f(unsigned int i) { .. }
然后像这样调用它:
int main() { f(-1); }
这是标准允许的,但它很可能是一个有风险的错误,例如会导致很长的运行时间(例如,如果 f 试图从 i 循环到 0)。但是,clang++(std=c++20)和clang-tidy(checks=*)都不会为此代码生成任何警告。我觉得这很奇怪,因为它们对危险性要低得多的问题发出警告,例如在代码中使用“幻数”,在“if”语句中不使用花括号,甚至以非标准顺序放置 include 语句。
是否有任何理由将负数作为无符号整数传递不被这些工具视为容易出错且值得警告?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。