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.


Anmelden zum Antworten