??? 03/28/05 11:44 Read: times |
#90528 - Promotion Responding to: ???'s previous message |
Ian Bell said:
Ian Bell said:
People think provided the use unsigned chars they will not get the problem. This is not the case for several reasons: 1. Compilers often promote chars to ints internally. Donald Catto said:
Ah, this old chestnut. The situations where a conforming compiler performs any kind of 'promotion' of chars are clearly defined by the 'C' standard. The Keil compiler, and, I would guess, any compiler targeted specifically at the 8051 does not promote char in most of these situations. If you use a char, you get a char. I just did a quick search on the Keil site for 'promotion' and the fourth hit was this http://www.keil.com/support/docs/749.htm Note the phrase 'When the 'if' statement is executed the variable is always promoted to an int.' Which is why I said "most of these situations". That particular article refers to a char being compared with an integer. There's nothing surprising about the char being promoted to an integer before comparison. |
Topic | Author | Date |
8051 in C or assembly? | 01/01/70 00:00 | |
Probably C | 01/01/70 00:00 | |
Always C | 01/01/70 00:00 | |
Mostly 'C' | 01/01/70 00:00 | |
No magic wand | 01/01/70 00:00 | |
Assembler when? | 01/01/70 00:00 | |
Shared data problem?? | 01/01/70 00:00 | |
Shared Data Problem | 01/01/70 00:00 | |
I see | 01/01/70 00:00 | |
Sared Data | 01/01/70 00:00 | |
addendum | 01/01/70 00:00 | |
Shared Data | 01/01/70 00:00 | |
Knowledge, not language. | 01/01/70 00:00 | |
Knowledge | 01/01/70 00:00 | |
Knowledge | 01/01/70 00:00 | |
Promotion | 01/01/70 00:00 | |
Promotion | 01/01/70 00:00 | |
Promotion | 01/01/70 00:00 | |
Traps for the unwary | 01/01/70 00:00 | |
Preaching | 01/01/70 00:00 | |
Ditto | 01/01/70 00:00 | |
red rag.... | 01/01/70 00:00 | |
Bend over then...![]() | 01/01/70 00:00 | |
hauling assembler | 01/01/70 00:00 | |
Clarification | 01/01/70 00:00 | |
Keil Allows this to be disabled | 01/01/70 00:00 | |
Know your tools | 01/01/70 00:00 | |
It means 8 bit may be 16 bits | 01/01/70 00:00 | |
More knowledge! | 01/01/70 00:00 | |
not really | 01/01/70 00:00 | |
So which... | 01/01/70 00:00 | |
Calculations in C | 01/01/70 00:00 | |
ibid | 01/01/70 00:00 | |
Not always.. | 01/01/70 00:00 | |
Example | 01/01/70 00:00 | |
Better?? | 01/01/70 00:00 | |
assembly | 01/01/70 00:00 | |
YMMV | 01/01/70 00:00 | |
assembly | 01/01/70 00:00 | |
Hitting the Wall | 01/01/70 00:00 |