错误:有符号整数表达式和无符号整数表达式之间的比较
Error: comparison between signed and unsigned integer expressions?
我在这行代码中得到这个错误。请帮我解决这个问题。
for (int i=0; i=((Main.size())-1); i++) {
. . 主要代码
#include <istream>
#include <fstream>
#include <vector>
#include <algorithm>
#include "data.hpp"
using namespace std;
int main() {
vector<double> Main;
int count;
string lineData;
double tmp;
ifstream myfile ("sheffield.data", ios::in);
//double number;
myfile >> count;
for(int i = 0; i < count; i++) {
myfile >> tmp;
Main.push_back(tmp);
cout << count;
}
cout << "Numbers:n";
cout << Main.size();
for (int i=0; i=((Main.size())-1); i++) {
cout << Main[i] << 'n';
}
cin.get();
return 0;
}
成员函数size返回的值类型为unsigned,而i声明为signed。
for (int i=0; i=((Main.size())-1); i++) {
cout << Main[i] << 'n';
}
因此,至少使用unsigned int i
或size_t i
来代替int i
。如果使用std::vector类中定义的类型std::vector<double>::size_type i
同样在循环的条件部分,你使用赋值操作符=
而不是比较操作符==
,但是如果你更新操作符,条件将是错误的,直到size()等于0。你必须使用<=
==
运算符循环应该如下所示
for ( std::vector<double>::size_type i = 0; i < Main.size(); i++ ) {
cout << Main[i] << 'n';
}
也可以使用基于范围的for语句来代替这个for语句,这样看起来简单得多。例如
for ( double x : Main ) {
cout << x << 'n';
}
i
是int类型(有符号),Main.size()
是unsigned int的结果,根据Main
的类型可能是size_t
。如果你在for循环中比较它们,你就得到了你的解释。
但是要注意:单个=
是赋值操作,而不是比较操作。
修复(可能):
for (unsigned int i=0; i < Main.size(); i++) {
你也可以考虑使用迭代器:
cout << "Numbers:n";
cout << Main.size();
for (vector<double>::const_iterator i = Main.begin(); i != Main.end(); ++i) {
cout << *i << 'n';
}
(顺便说一句,用大写字母命名变量(Main
)有点令人困惑!)
相关文章:
- 如何打印boost多精度128位无符号整数
- C++编译错误(有符号和无符号整数表达式之间的比较)
- C++ 有符号和无符号整数表达式之间的比较
- 有符号和无符号整数表达式之间的比较
- 消除有符号和无符号整数表达式之间比较的优雅方式
- 警告:有符号和无符号整数表达式之间的比较
- C++NOW:有符号和无符号整数表达式(Freebsd、GCC、Gmake)之间的比较
- c++:有符号和无符号整数表达式之间的比较
- 有符号和无符号整数表达式之间的比较
- 有符号和无符号整数表达式之间的比较在make install时发出警告
- 我的For循环出了什么问题?我得到警告:有符号和无符号整数表达式之间的比较[-Wsigncompare]
- 错误:comp. bet.有符号/无符号整数表达式
- 警告:有符号和无符号整数表达式之间的比较.如何解决它
- Visual Studio 2013有符号/无符号整数数学行为不同时,求值表达式作为函数参数,编译器切换
- 基本级别的映射,"此常量表达式的类型为"const char*",而不是所需的"无符号整数"类型
- 警告:有符号和无符号整数表达式之间的比较[-Wsign-compare]
- 有符号和无符号整数表达式与0x80000000之间的比较
- 警告:有符号和无符号整数表达式之间的比较 [-Wsign-compare]
- "有符号和无符号整数表达式之间的比较"真的会导致错误吗?
- 错误:有符号整数表达式和无符号整数表达式之间的比较