2016-04-21 15 views
0

Ich habe ein Problem in der if Klausel Ich denke, der Code ist korrekt, aber ich weiß nicht, warum es ein Problem gibt.Fehler: erwarteter primärer Ausdruck vor char

#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; 
} 

Es wäre great..Thanks

+4

die No-Code ist nicht korrekt. Deshalb ist die if() Anweisung ein Problem. "If (a = char)" ist nicht gültig C oder C++. –

+1

Ich würde sehr empfehlen, zu erforschen und zu lernen, wie man einfaches C++ - Programm, variable Typisierung und den Unterschied zwischen Zuweisung und Gleichheit schreibt. – fetherolfjd

+0

also wie kann ich es korrigieren Ich möchte, dass wenn ** ein ** = Zeichen, dann sollte der Code einen Fehler geben. –

Antwort

1

Sie werden nicht den Typ einer Variablen zu vergleichen, indem Sie versuchen a und char überprüfen.

a wurde als int deklariert und wird immer eine int sein.
Sie müssen nicht überprüfen, seine Art, Sie wissen welcher Typ ist es.

Wenn Sie wirklich alle Daten zu übernehmen möchten, und dann überprüfen, um zu sehen, ob es zu einem int umgewandelt werden kann, dann müssen Sie eine string, akzeptieren und versuchen, diese Zeichenfolge zu analysieren:

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; 
} 
+0

Nein, aber ich weiß 'a' ist ein 'int' deklariert, aber dann benutze ich einfach das Programm zu sagen, dass ** wenn ** 'a' gleich einem Zeichen ist, dann sollte der Code einen Fehler geben. –

+0

siehe bitte den ganzen Code Ich habe auch eine while-Schleife !!! @abelenky –

+0

Beenden Sie Ihren eigenen verdammten Code. Ich habe die wichtigen Teile ausgeschrieben. – abelenky

0

Ihre Variable ist immer eine ganze Zahl. Selbst wenn Sie ein Zeichen eingeben, erhält es den ASCII-Wert des Zeichens.

+0

@ downvoter: Kommentare? – ayushgp

1

Wie andere gesagt haben, wird "a" immer ein int sein. cin.fail() im folgenden Code kann Ihnen helfen, nach einem Eintrag zu suchen, der keine Nummer ist, und ihn zu kennzeichnen.Hoff Ihnen das weiterhilft.

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

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

Dies ist die Lösung für die Frage.

#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; 

}

Verwandte Themen