gpt4 book ai didi

c++ - 比较有符号和无符号整数安全吗?

转载 作者:行者123 更新时间:2023-11-30 02:26:34 25 4
gpt4 key购买 nike

<分区>

在此代码示例中使用 int 而不是 std::size_t

std::vector<int> v {1,2,3,4};
for(int i = 0; i < v.size(); i++)
{
std::cout << v[i] << " ";
}

编译器生成以下警告:

warning: comparison between signed and unsigned integer expressions

但是程序按预期运行并输出:

1 2 3 4

在我从事的项目中,我也经常注意到这些警告,这些警告已经在生产环境中运行多年,而这些警告从未给我们的客户带来任何问题。由于显然这些程序在比较有符号和无符号整数时没有问题,我想问:

  • 在适用的情况下始终使用无符号整数而不是有符号整数,在性能或安全方面是否有任何好处?
  • 在什么情况下(如果有的话)比较有符号和无符号整数会导致错误或意外行为?
  • 如果没有充分的理由担心这些警告,是否有任何历史原因,为什么这些信息在过去对开发人员有用?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com