我无法修复此警告消息。
警告C4018:'<' :签名/未签名不匹配
任何人都可以帮我找出问题所在吗?它位于while (i < bin.length())
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
void intro();
bool isBinary(string);
void decToBin();
string getBin();
void binToDec(string);
char getChoice();
char getContinue();
int main()
{
char choice, cont;
string bin;
intro();
do{
choice = getChoice();
if(choice == 'b' || choice == 'B')
{
bin = getBin();
bool binIsBinary = isBinary(bin);
if(binIsBinary)
binToDec(bin);
}
else
{
cout<<"Error!!! Your Number is Not Binary."<<endl;
cin.clear();
}
if(choice == 'd' || choice == 'B')
decToBin();
cont = getContinue();
}
while(cont == 'y' || cont == 'Y');
}
void intro()
{
cout << "This program coverts decimal numbers to binary and vice versa."<<endl;
}
bool isBinary(string bin)
{
int i=0;
bool binIsBinary = true;
while (i < bin.length())
{
if( bin.at(i) != '1' && bin.at(i) != '0' )
{
binIsBinary = false;
}
i++;
}
return binIsBinary;
}
void decToBin()
{
int dec;
string bin;
cout << endl << "Please enter a decimal number:";
cin >> dec;
bin = "";
while (dec != 0)
{
if (dec % 2 == 0)
bin.insert(0, "0");
else
bin.insert(0, "1");
dec = dec / 2;
}
cout << "The equivalent binary number is: " << bin << endl << endl;
}
string getBin()
{
string bin;
cout << endl << "Enter a binary number: ";
cin >> bin;
return bin;
}
void binToDec(string bin)
{
double deci;
double len;
len = bin.length();
deci = 0;
for (int i=0; i<len; i++)
if (bin.at(i) == '1')
deci = deci + pow(2, len-i-1);
cout << "The equivalent decimal number is: " << deci << endl
<< endl;
}
char getChoice()
{
char choice;
cout << endl << "If you would like to convert a binary to a decimal then enter b."<<endl;
cout << "If you would like to convert a decimal to a binary then enter d. ";
cin >> choice;
return choice;
}
char getContinue()
{
char cont;
cout << "Would you like to convert another number(Y/N)? ";
cin >> cont;
return cont;
}
答案 0 :(得分:3)
好吧,i
为int
,bin.length()
为unsigned
,因此不匹配。要删除警告,请创建unsigned
。