gpt4 book ai didi

c++ - 警告 : Comparison between signed and unsigned integer expression

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:29 25 4
gpt4 key购买 nike

我在 codepad.org 上运行以下代码时出现此错误。 “在成员函数‘double Xchange::getprice(std::string)’中:第 87 行:警告:有符号和无符号整数表达式之间的比较”

这是我的代码:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

class Xchange
{
public:
Xchange();//does nothing (?)

double getprice(string symbol);

private:
vector <Stock> stocks;
};

double Xchange::getprice(string symbol)
{
for(int i=0; i < stocks.size(); i++) {
if(stocks[i].getsymbol()==symbol) {
return stocks[i].getprice();
}
}

return -1; //means not found
}

最佳答案

这里:

for(int i=0; i < stocks.size(); i++)

i是一个有符号整数,stocks.size()未签名。您可以使用 std::size_t , 或者,如果您想更精确,请使用 vector<Stock>::size_type .

for(vector<Stock>::size_type i=0; i < stocks.size(); i++) { .... }

此警告试图防止的问题是负符号到无符号的转换会产生很大的数字,而且很可能不是您想要的。除此之外,有符号整数的数值范围与相同大小的无符号整数的数值范围不同。

参见 C++ types获取更多信息。

请注意,这在 C++11 中更容易:

for(const auto& stock : stocks)
{
if(stock.getsymbol()==symbol) //added getsymbol "()"
{
return stock.getprice();
}
}

关于c++ - 警告 : Comparison between signed and unsigned integer expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19700333/

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