From: SourceForge.net <no...@so...> - 2005-11-24 07:03:57
|
Bugs item #1365316, was opened at 2005-11-23 23:03 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1365316&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: msc51(8051) target Group: non bugs Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: A bug in the if() statement Initial Comment: HI ! 1. I am using SDCC 2.5.4 #1168 (Nov 23 2005)(MINGW32) 2. Target is 8051 3. I found a bug in the if() statement, it look like a type casting bug, I don't know 4. Sample code is: unsigned char ByteVar1; //8 bit variable unsigned char ByteVar2; //8 bit variable ByteVar1 = 0x00; ByteVar2 = 0xFF; if( ByteVar1 == (ByteVar2+1) ) { printf( "It is OK");} else { printf( "It may be a bug"); } 5. Could you help me !!! 6. My mail is ye...@hm... THANKS !!! ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1365316&group_id=599 |
From: SourceForge.net <no...@so...> - 2005-11-24 08:30:36
|
Bugs item #1365316, was opened at 2005-11-24 08:03 Message generated for change (Comment added) made by bernhardheld You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1365316&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: msc51(8051) target Group: non bugs >Status: Closed >Resolution: Rejected Priority: 5 Submitted By: Nobody/Anonymous (nobody) >Assigned to: Bernhard Held (bernhardheld) Summary: A bug in the if() statement Initial Comment: HI ! 1. I am using SDCC 2.5.4 #1168 (Nov 23 2005)(MINGW32) 2. Target is 8051 3. I found a bug in the if() statement, it look like a type casting bug, I don't know 4. Sample code is: unsigned char ByteVar1; //8 bit variable unsigned char ByteVar2; //8 bit variable ByteVar1 = 0x00; ByteVar2 = 0xFF; if( ByteVar1 == (ByteVar2+1) ) { printf( "It is OK");} else { printf( "It may be a bug"); } 5. Could you help me !!! 6. My mail is ye...@hm... THANKS !!! ---------------------------------------------------------------------- >Comment By: Bernhard Held (bernhardheld) Date: 2005-11-24 09:30 Message: Logged In: YES user_id=203539 No it's not a bug, it's according to the C standard. The integer promotion rules require that ByteVar2 is promoted to int before the addition and comparison. What actually happens is: (int) ByteVar1 == (int) ByteVar2 + 1 You can get your expected behaviour with: ByteVar1 == (unsigned char) (ByteVar2 + 1) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1365316&group_id=599 |
From: SourceForge.net <no...@so...> - 2005-11-25 02:09:18
|
Bugs item #1365316, was opened at 2005-11-23 23:03 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1365316&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: msc51(8051) target Group: non bugs Status: Closed Resolution: Rejected Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Bernhard Held (bernhardheld) Summary: A bug in the if() statement Initial Comment: HI ! 1. I am using SDCC 2.5.4 #1168 (Nov 23 2005)(MINGW32) 2. Target is 8051 3. I found a bug in the if() statement, it look like a type casting bug, I don't know 4. Sample code is: unsigned char ByteVar1; //8 bit variable unsigned char ByteVar2; //8 bit variable ByteVar1 = 0x00; ByteVar2 = 0xFF; if( ByteVar1 == (ByteVar2+1) ) { printf( "It is OK");} else { printf( "It may be a bug"); } 5. Could you help me !!! 6. My mail is ye...@hm... THANKS !!! ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2005-11-24 18:09 Message: Logged In: NO TO: bernhardheld Thanks for your help ---------------------------------------------------------------------- Comment By: Bernhard Held (bernhardheld) Date: 2005-11-24 00:30 Message: Logged In: YES user_id=203539 No it's not a bug, it's according to the C standard. The integer promotion rules require that ByteVar2 is promoted to int before the addition and comparison. What actually happens is: (int) ByteVar1 == (int) ByteVar2 + 1 You can get your expected behaviour with: ByteVar1 == (unsigned char) (ByteVar2 + 1) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1365316&group_id=599 |