未签名/签名不匹配

时间:2012-11-16 11:02:00

标签: c++ visual-c++

我无法修复此警告消息。

警告C4018:'<' :签名/未签名不匹配

任何人都可以帮我找出问题所在吗?它位于while (i < bin.length())

的bool函数中
#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;
}

1 个答案:

答案 0 :(得分:3)

好吧,iintbin.length()unsigned,因此不匹配。要删除警告,请创建unsigned