Wie funktioniert der isdigit-Befehl C++?

Guten Abend!
Ich hoffe ihr könnt mir bei einem kleinen Programmierproblem helfen. Mein Problem ist der ‚isdigit‘-Befehl. Hier mal mein Code:

#include „stdafx.h“
#include
#include
using namespace std;

int main(){
int n=1;
if(isdigit(n)==true) cout

Also ich kenne mich mit C++ nun überhaupt nicht aus, aber wenn ich mir das so anschaue, dann denke ich, dass hier ein SCHIFT LEFT befehl ausgeführt wird.
Wenn ich eine „1“ einmal nach links schiebe erhalte ich logischer weise eine „2“.
(„00000001“

Hallo,

Du verstehst isDigit falsch.
Diese Methode überprüft ob ein character eine Zahl repräsentiert.
Das Übergeben von ‚a‘ würde 0 (false) und zum Beispiel ‚1‘ würde einen anderen Wert als 0 zurückgeben (true).
Das Verwenden von Integern macht also keinen Sinn.

Ein Integer ist immer eine Zahl.
Ob sie eine Zahl von 0-9 ist (digit - Ziffer), lässt sich auch durch einfache if Abfragen mit größer (&gt:wink: und kleiner (

Der isdigit-befehl funktioniert auf Daten vom Typ char, also auf Buchstaben. Die Buchstaben entsprechen für den Compiler auch Zahlenwerten, diese haben aber nichts mit den darin zu lesenden Werten zu tun.

So entspricht das „A“ dem Zahlenwert 65 bzw. hexadezimal 0x41. Die Zahlen 0-9 entsprechen den Characters 48-57 bzw. hexadezimal 0x30-0x49. Der Compiler hat deine 1 als character interpretiert. Der Buchstabe Nummer 1 entspricht weder einem lesbaren Buchstaben noch einer Zahl, sondern einem sog. control char. Siehe auch http://www.asciitable.com/

Hallo Keks,

Du verwechselst die ZIFFER 1 mit der ZAHL 1 …

„isdigit“ prüft ein ZEICHEN ( also ‚a‘, ‚b‘, ‚c‘…,‚1‘. ‚2‘,…) darauf, ob es sich um eine Ziffer handelt oder etwas anderes, z.B. einen Buchstaben, ein Sonderzeichen etc

Probier mal diesen Schnipsel :

#include
#include
#include

int main ()
{
char inp[1] ;

while( (inp[0]=getchar()) != ‚q‘ )
{
if ( isdigit(inp[0]) )
{
printf( " %c ist eine Ziffer : sie steht für die Zahl %d\n", inp[0], atoi(inp) ) ;
}
}
printf( „Das wars - CU !\n Eine Taste zum Beenden…“) ;

getchar() ;
return 0;
}

Hacketau !
dreysacz

Hallo Anfänger,
ehm die 1 an sich stimmmt:
http://www.cplusplus.com/reference/clibrary/cctype/i…

nur lass mal testweise das int weg, legt da c++ selbst bei verwendenung den Datentyp fest oder schimpft der Kompiler?

Gruß Meho

Hallo,

isdigit gibt 1 zurück falls es sich beim Argument um
ein Zeichen für die Zahlendarstellung handelt, sonst 0.
n ist hier integer also immer Zahl. Die Funktion
so anzuwenden ist sinnlos.
Gebraucht wird isdigit() wenn man z.B. Zeichenketten
in denen sich Zahlenwerte verbergen verarbeitet.
Übrigens ist das eine sehr alte Funtion aus der
standard-c library. Hat also mit der Sprache c++
wenig bis garnichts zu tun.
Ich gebe zu bedenken, daß beim Einsatz von Unicode und Landesspezifischen Zahlendarstellungen der Gebrauch problematisch sein kann.
Kann aber nie schaden Experimente damit zu machen!
Probiere etwa mal : isdigit(0x30)
Viel Spaß noch.

Andreas

Hallo -
tut mir leid - kann leider nicht helfen
Gruss
Dieter Wolf

if(isdigit(n)==true) — funktioniert nicht, weil „true“ nicht die richtige Einheit ist, ebenso für „false“.

Es wird funktionieren: " int n=‚1‘; "
und bitte, " if( isdigit(n) ) ", für „true“, ebenso "if( !isdigit(n) ) " für „false“.

Viele Grüße aus Andalusien

Gupetit