错误:char之前的预期primary-expression

时间:2016-04-21 02:40:28

标签: c++

我在if条款中遇到问题我想代码是正确的,但我不知道为什么会出现问题。

#include <iostream>

using namespace std;

int main()
{
   int a;
   cout<<"Enter a Number and we will tell you the loop"<<endl;
   cin>>a;
   {
      if(a=char)
      {
         cout<<"Enter only Numbers"<<endl;
      }
      else
      {
         cout<<"The value is: ";<<a<<endl;
      }

   }
   do
   {
      cout<<a<<endl;
      a++;
   } while(a<=10);
   cout << "Hello world!" << endl;
   return 0;
}

太棒了。谢谢

4 个答案:

答案 0 :(得分:1)

您无法通过尝试比较achar来检查变量的类型。

a被宣布为int,并且始终为int 您无需检查其类型, 知道 它的类型。

如果您真的想接受任何数据,然后检查它是否可以转换为int,那么您需要接受string,并尝试解析该字符串:< / p>

int main()
{
    string a;

    cout << "Enter a Number and we will tell you the loop" << endl;
    cin >> a;  // Get a string from input

    int number;
    try
    {
        number = strtoi(a, 0, 10);  // Try to convert the string to an int
                                    // Throws an exception if it cannot be converted.
    }
    catch(const invalid_argument&)
    {
        // If the number could not be converted, catch the exception, and show an error message.
        cout << "Enter only Numbers" << endl;
        throw;
    }

    cout << "The value is: " << number << endl;

    return 0;
}

答案 1 :(得分:1)

像其他人所说,&#34; a&#34;将永远是一个int。下面代码中的cin.fail()可以帮助您检查不是数字的条目并标记它。希望这有帮助。

int a;
    cout << " Enter a number" <<endl;
    cin >> a;

        while (cin.fail())
        {
            cout <<"Error. enter a number " << endl;
            cin.clear();
            cin.ignore();
            cin >> a;
        }

答案 2 :(得分:0)

您的变量始终整数。即使输入一个字符,也会给出该字符的ASCII值。

答案 3 :(得分:0)

这是问题的解决方案。

#include

using namespace std;

int main()
{
int a;

cout<<"Enter a Number and we will tell you the loop"<<endl;
cin >> a;

if(a) {
    cout<<"The value is: "<<a<<endl;
}
else{
    cout<<"Enter only Numbers"<<endl;
}

do{
    cout<<a<<endl;
    a++;
}while(a>=100);

cout << "Hello world!" << endl;
return 0;

}