Vergleich int16_t mit uint16_t

Gast #2896543
Lesenswert?

Hallo,

ich habe bei meinen Programm folgendes festgestellt:
1
uint16_t Var1 = 80
2
int16_t Var2 = -70
3
if (Var2 > Var1){ 
4
    Var2= Var1;
5
}

Nach dieser Anweisung ist Var2=80, obwohl eigentlich kleiner als Var1.
Scheinbar konvertiert das Programm Var2 beim Vergleich in ein uint16_t. 
Denn so funktionierts:
1
uint16_t Var1 = 80
2
int16_t Var2 = -70
3
if (Var2 > (int16_t) Var1){ 
4
    Var2 = Var1;
5
}

hier bleibt Var2 = -70

Aber wieso? Ist das C-Standard, dass bei Vergleichen von signed und 
unsigned beide Operanden nach unsigned konvertiert werden?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren