Ich lerne seit ein paar Tagen C im Selbststudium und bisher war auch alles recht einfach und logisch. Vorhin jedoch sties ich auf eine seltsame Bemerkung in meinem Buch.
Der Wertebereich eines unsigned char ist ja bekanntlich 0-255, der eines signed char ist -127 - 127.
Dennoch liefert mir das folgende Programm keine richtige Antwort
und zwar findet es in meinem text-array kein 'ä',. Mache ich aber aus dem unsigned ein signed, wird das 'ä' gefunden, obwohl es den int-wert 132 hat, wie mir folgendes Programm zeigt
mach ich aber in das erste Programm die Zeile
, so erhalte ich für %i den wert -28
wo ist hier die logik geblieben?
Ich hab auch schon mit einem andren C-Coder gesprochen, und er riet mir, einfach bei char nie ein signed/unsigned zu machen, was ich wohl auch befolgen werde, aber dennoch ist mir das ein absolutes Rätsel.
Ich hoffe mal, dass ich das auch so erklärt habe, dass mir Irgendwer helfen kann ^^
Der Wertebereich eines unsigned char ist ja bekanntlich 0-255, der eines signed char ist -127 - 127.
Dennoch liefert mir das folgende Programm keine richtige Antwort
Code:
#include <stdio.h>
#include <string.h>
main () {
unsigned char text[80];
int i;
strcpy(text,"blubäzz");
for(i=0; i<strlen(text);i++) {
if(text[i] == 'ä')
printf("\ngefunden");
else
printf("\nnicht gefunden");
}
}
Code:
#include <stdio.h>
main () {
int i;
printf("\n");
for(i=0;i<=255;i++)
printf("%i = %c\t",i,i);
}
Code:
printf("\ngefunden %i",text[i]);
wo ist hier die logik geblieben?
Ich hab auch schon mit einem andren C-Coder gesprochen, und er riet mir, einfach bei char nie ein signed/unsigned zu machen, was ich wohl auch befolgen werde, aber dennoch ist mir das ein absolutes Rätsel.
Ich hoffe mal, dass ich das auch so erklärt habe, dass mir Irgendwer helfen kann ^^