We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
This ex. will not work
char data test; char TestF(void); char TestF(void) { if (test == 0x8A) { //... return(1); } } //Take a look at the Assambly code ; FUNCTION TestF (BEGIN) ; SOURCE LINE # 5 ; SOURCE LINE # 6 ; SOURCE LINE # 7 R MOV R7,test MOV A,R7 RLC A SUBB A,ACC MOV R6,A MOV A,R7 XRL A,#08AH ORL A,R6 R xJNZ ?C0002 ; SOURCE LINE # 8 ; SOURCE LINE # 10 MOV R7,#01H ; SOURCE LINE # 11 ; SOURCE LINE # 12 ?C0002: RET
char data test; char TestF(void); char TestF(void) { if (test == (char)0x8A) { //... return(1); } } //Take a look at the Assambly code ; FUNCTION TestF (BEGIN) ; SOURCE LINE # 5 ; SOURCE LINE # 6 ; SOURCE LINE # 7 R MOV A,test R xJNE A,#08AH,?C0002 ; SOURCE LINE # 8 ; SOURCE LINE # 10 MOV R7,#01H ; SOURCE LINE # 11 ; SOURCE LINE # 12 ?C0002: RET
...and another way: if you for some reason need to compare signed value as not signed one then you may use something like: if ((unsigned char)test == 0x8A) So, my previous post shows you how compare signed variable with signed (here: negative) number, this example above shows how to compare signed variable as unsigned one. In any case, it is your work to say to compiler about types conversion. Regards, Oleg