Stringvergleich



  • Weiss jemand warum folgender Code eine Warning erzeugt:

    if (string[j] == "A")
    

    (warning: comparison between pointer and integer
    warning: comparison with string literal results in unspecified behavior)

    und folgender Code nicht?

    if (string[j] == 'A')
    

    Besten Dank



  • 'A' ist ein char, "A" eine Zeichenkette und dementsprechend ein Zeiger.



  • Warnung? Das müsste eigentlich ein Error sein und dürfte nicht kompilieren. "A" ist ein const char* 'A' ist ein char und somit ausschließlich für den char==char-Vergleich geeignet.



  • Vicious Falcon schrieb:

    Warnung? Das müsste eigentlich ein Error sein

    Logisch: ja
    Syntaktisch: nein

    ein Zeiger kann ja als integer angesehen werden und ein char auch.



  • Michael E. schrieb:

    'A' ist ein char, "A" eine Zeichenkette und dementsprechend ein Zeiger.

    Ist das C Standard? Ich habe das (sagen wir bewusst) in noch keinem C Lehrbuch gesehen... Aber das muss nichts heissen 🤡

    Besten Dank für die Antworten.



  • Ja, ist es.



  • comp_lit schrieb:

    Ist das C Standard?

    Das sind allerwichtigste C Grundlagen. Wenn du das nicht verstanden hast brauchst/kannst du kein C Programmieren.

    Ist aber auch der Stolperstein für Anfänger.



  • Shade Of Mine schrieb:

    Vicious Falcon schrieb:

    Warnung? Das müsste eigentlich ein Error sein

    Logisch: ja
    Syntaktisch: nein

    Stimmt:
    C : Compilerwarnung
    C++: Compilerfehler


Log in to reply