Variable wird nicht erkannt
-
Hallo ² all,
hab ein kleines warscheinlich newbie haftes problem aber es muss trotzdem gelöst werden ^^. Und mein C buch mit dem ich sehr unzufrieden bin hilft mir auch nicht.
also ich will 2Zahlen einlesen diese addieren und wieder ausgeben.# include <stdio.h> # include <stdlib.h> int wait () { setvbuf(stdin,NULL,_IONBF,0); setvbuf(stdin,NULL,_IOFBF,BUFSIZ); getchar(); } main() { short x; short y; short z; printf ("Bitte einen xWert eingeben:"); scanf ("%d",&x); printf ("Bitte einen yWert der addiert werden soll eingeben:"); scanf ("%d",&y); z = x + y; printf("\nHier nochmal der xWert x = %d \n",x); printf("Hier nochmal der yWert y = %d \n\n",y); printf ("Hier die Summe: x + y = %d" ,z); wait(); }
So weit so gut. aber der x Wert wird einfach nicht erkannt. ich hab doch alles so wie beim y zeugs und da wird alles erkannt und gemacht.
Danke schonmal für antworten wenns geht auch mit einer kleinen erklärung was ich falsch gemacht hab. THX
-
du liest einen short wert mit dem präfix %d ein, welches aber nur fuer integer werte gilt...
scanf ("%d",&x);
-
@DuxMortis
Warum bindest du die conio.h nicht ein u.verwendest nicht einfach getchar()
anstatt umständlich eine wait funktion zu proggen?
-
cico2005 schrieb:
@DuxMortis
Warum bindest du die conio.h nicht ein u.verwendest nicht einfach getchar()
anstatt umständlich eine wait funktion zu proggen?weil conio.h kein ANSI C ist und nicht portabel ist, und nicht jeder hat Windof.
-
deine wait()-funktion bringt nichts, da die eingaben bereits zeilenweise von der konsole kommen. anderenfalls wäre es ja garnicht möglich, konsoleneingaben zu editieren. besser wäre eine wait()-funktion, die alles bis zum new-line einliest:
void wait (void) { while(getchar()!='\n'); }
ansonsten gilt, was Moh schreibt: deklariere deine variablen als int.
falls du aber auf short bestehst, dann nimm als konversion %hd. das h steht für short. ist der zweite buchstabe, denn der anfangsbuchstabe s ist ja bereits für strings belegt.
-
weil conio.h kein ANSI C ist und nicht portabel ist, und nicht jeder hat Windof.[/quote]
ok wenn er linux hat kann er doch die curses.h benutzen mit getch() oder etwa nicht.
-
mich würde vorallem auch interesieren warum du short verwendest und z.b nicht double oder float für dezimalzahlen.so kannst du ja keine dezimalzahlen berrechnen.und berrechne mit deinem programm mal diese einfache aufgabe:
(gehen wir davon aus das du bestenfalls unsigned short verwendest)65535+1.und zudem würde ich auf die 2 bytes sch.....gegenüber float.
-
DuxMortiS schrieb:
Hallo ² all,
Und mein C buch mit dem ich sehr unzufrieden bin hilft mir auch nicht.wird in deinem buch die main funktion ohne rückgabewert int geschrieben?...tolles buch...