From: SourceForge.net <no...@so...> - 2005-11-29 08:56:58
|
Bugs item #1368489, was opened at 2005-11-28 19:42 Message generated for change (Settings changed) made by bernhardheld You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1368489&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: C-Front End >Group: fixed >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Bernhard Held (bernhardheld) >Summary: comparing (un)signed char's Initial Comment: #define MICROCONTROLLER_SAB80517 void main() { char a; for(;;) { a +=1; P5_7 = a < 0x80; // not working !!!!! P5_6 = !(a > 0x80); // OK P5_5 = a; // OK } } whats about P5_7 = a < 0x80; ???? rei...@in... sdcc vers. 2.4.8 thanks for any suggestion !! ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2005-11-28 23:06 Message: Logged In: YES user_id=203539 > According to the C standard 0x80 is an unsigned int. > According to the SDCC manual char is signed. This can't be the whole story. The value range of variable 'a' (signed char) is -128...+127, and this is always smaller than 0x80 == +128. Operations with both a 'signed char' and 'unsigned char' are really hairy, this needs a 2nd thought. ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2005-11-28 20:50 Message: Logged In: YES user_id=888171 According to the C standard 0x80 is an unsigned int. According to the SDCC manual char is signed. I leave the math to you. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1368489&group_id=599 |