C/C++ Term in Bedingung

darktrym

Fahnenträger
Kann mir mal jemand folgendes Verhalten erklären:
Code:
#include <stdio.h>

int main() {
unsigned int a=126, b=127;
unsigned char c=126, d=127;


	if(a-b < 0) {
		printf("1. true\n");
	}

	if(c-d < 0) {
		printf("2. true\n");
	}

}
Ausgabe:
 
Danke dir. Der erste Fall ist mir erst gestern zum ersten Mal begegnet und ich konnt's nicht erklären.
 
Das ganze nennt sich Integer Promotion Rules und war bereits teil von ANSI-C. Bei diversen 8-Bit Compilern kann man das abschalten.
 
Zurück
Oben