Problem mit if
-
Ich habe gerade angefangen ein Prog zu schreiben , als dieses if nicht ging.Ich habe mir die Augen aus dem Kopf geschaut, doch keinen Fehler entdeckt.
#include <stdio.h> #include <conio.h> int main() { char ein[50]; long mode, Schluessel, sprung ; printf("blablablabla342"); scanf("%d" ,&mode); printf("%d", mode); [u]if(mode<0)printf ("blablabla ");[/u] else printf("blablabla234fsjsd"); getch(); }
wenn man hier 1 eingibt kommt man zur else funktion, doch gibt man 0 an so kommt man wieder zur else funkt.. Wer entdeckt hier den Fehler??Bitte möglichst schnell!!!!
-
Artemisc-noob schrieb:
if(mode<0)printf ("blablabla "); else printf("blablabla234fsjsd");
wenn man hier 1 eingibt kommt man zur else funktion, doch gibt man 0 an so kommt man wieder zur else funkt.
der if()-Teil wird erst erreicht, wenn mode kleiner als 0 ist (z.B. -1) (so steht's zumindest in der Bedingung).
btw, für long-Werte benötigst du "scanf("%ld",&mode);"
-
Danke!Es lag zwar nicht an dem <0 ,denn das hatte ich auch mal(aus lauter verzweiflung habe ich alles umgebastelt!),sondern an dem %ld!Das kannte ich gar nicht! Vielen Dank, du hast mir viel erspart...
-
fuer welches system programmierst du? das muss ein DOS sein (riecht nach borland), oder?
-
c.rackwitz schrieb:
fuer welches system programmierst du? das muss ein DOS sein (riecht nach borland), oder?
wieso, ist da der format bezeichner bei scanf() für long werte immer falsch?
-
mir ging durch den kopf, dass auf 32bit systemen int und long int gleichbreit sind und damit fuer scanf keinen unterschied machen. deswegen faellt der fehler beim %ld nicht auf.
auf 16bit systemen (dos?) gibt es da sehr wohl einen unterschied.
-
Artemisc-noob schrieb:
Danke!Es lag zwar nicht an dem <0 ,denn das hatte ich auch mal(aus lauter verzweiflung habe ich alles umgebastelt!),sondern an dem %ld!Das kannte ich gar nicht! Vielen Dank, du hast mir viel erspart...
Der Fehler liegt klar an dem <0. Wenn du 0 eingibst muss der else zweig kommen.
richtig wäre hier kleiner-gleich 0.