Was ist falsch? Wortgenerator
-
case '1':
soll besimmt
case 1:
sein.
-
Um es zusammenzufassen:
Dein Code ist C + cout.
Dein C-Code ist kein ANSI C.
volkards Code muss sich nach dem Standard nicht so verhalten, wie er soll.
volkards Code ist eleganter.
Du könntest deinen Code kürzer machen und trotzdem standardkonform bleiben.
-
Ok, Änderung für Nicht-ASCII-Zeichensatz-Habe-Rechner.
//ungetestet #include<iostream> #include<ctime> int main(){using namespace std;srand(time(0));for(int i=0;i!=10;++i)cout<<"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand()%26];cout<<'\n';}
-
wxSkip schrieb:
Um es zusammenzufassen:
Dein Code ist C + cout.
Dein C-Code ist kein ANSI C.
volkards Code muss sich nach dem Standard nicht so verhalten, wie er soll.
volkards Code ist eleganter.
Du könntest deinen Code kürzer machen und trotzdem standardkonform bleiben.Ich hab ja erst vor kurzem angefangen C++ zu lernen...
Von solchen Standards habe ich noch nicht viel gehört oder gelesen.
Trotzdem, danke für eure Antworten.-Skotchy
-
Lässt der Compiler das zu?
"BuchstabenArt" ist doch vom Typen Integer die cases vergleichen aber ein Character. Wird das implizit gecastet?
Können '15' ein Character sein?
Dachte das es entweder nur eine Zahl sein kann
case 15:
oder ein String
case "15":
-
Alles "int-ige" ist erlaubt. Strings sind nicht erlaubt.
-
David W schrieb:
Können '15' ein Character sein?
Denk an Unicode.
-
Das 15 ein Zeichen repräsentieren können ist mir klar, ich meinte eher die Art der Eingabe.
C# quittiert diese Zeilechar i = '15';
mit der Meldung
Too many characters in character literal
Was ich auch verstehe, da es eine 1 und eine 5 ist und kein Zeichen mit den 15er ASCII Wert
Wogegenchar i = (char)15;
direkt funktioniert, da man an der stelle die 15 als Integer nach einem Char schiebt.
-
David W schrieb:
Das 15 ein Zeichen repräsentieren können ist mir klar, ich meinte eher die Art der Eingabe.
C# quittiert diese Zeilechar i = '15';
mit der Meldung
Too many characters in character literal
Was ich auch verstehe, da es eine 1 und eine 5 ist und kein Zeichen mit den 15er ASCII Wert
Wogegenchar i = (char)15;
direkt funktioniert, da man an der stelle die 15 als Integer nach einem Char schiebt.
wchar_t c='15';//c='1'*256+'5'=49*256+53=12597
-
Scheinbar erkennt der C++ Compiler das die 15 nicht das Literal selber ist sondern der ASCII und Castet selber entsprechend.
C# kanns nicht.
http://www.ideone.com/OpEOL