| ??? 01/29/08 15:36 Modified: 01/29/08 15:37 Read: times |
#150063 - Everything in C defaults to int, which is signed Responding to: ???'s previous message |
Esko Ilola said:
The root cause was the compiler assumptions over the constants. These are always (sic) treated as SIGNED integers if not told othervise. Not quite always - here's the chapter & verse: ISO/IEC 9899:1990, section 6.1.3.2, Integer Constants, said:
Semantics
The type of an integer constant is the first of the corresponding list in which its value can be represented. Unsuffixed decimal: int, long int, unsigned long int and note that ints are implicitly signed: ISO/IEC 9899:1990, section 6.1.2.3, said:
Types
There are four signed integer types, designated as signed char, short int, int, and long int. If you want an unsigned constant, use the 'U' suffix... |
| Topic | Author | Date |
| The art of typecasting | 01/01/70 00:00 | |
| I'd like to disagree | 01/01/70 00:00 | |
| two comments | 01/01/70 00:00 | |
| Two comments on comments | 01/01/70 00:00 | |
| The Art of correct Constants | 01/01/70 00:00 | |
| int - number of bits unknown | 01/01/70 00:00 | |
| Corrected Art of correct Constants | 01/01/70 00:00 | |
| More assumptions | 01/01/70 00:00 | |
| stdint.h | 01/01/70 00:00 | |
| Or, in the absence of stdint.h... | 01/01/70 00:00 | |
| Const vs #define | 01/01/70 00:00 | |
| Opps! | 01/01/70 00:00 | |
| which may be a reason to prefer #define over const | 01/01/70 00:00 | |
| enum | 01/01/70 00:00 | |
| Varies | 01/01/70 00:00 | |
| Know Thy Stuff - enum | 01/01/70 00:00 | |
| You are right | 01/01/70 00:00 | |
| Know Thy Stuff | 01/01/70 00:00 | |
| And... | 01/01/70 00:00 | |
| I'll pass(cal) on that one :) | 01/01/70 00:00 | |
| Everything in C defaults to int, which is signed | 01/01/70 00:00 | |
| Never overlook lint | 01/01/70 00:00 | |
| before Steve says it... | 01/01/70 00:00 | |
| Pascal | 01/01/70 00:00 | |
| strong typing | 01/01/70 00:00 | |
| why Ada never took off | 01/01/70 00:00 | |
| Wirth-less | 01/01/70 00:00 | |
Why ? | 01/01/70 00:00 |



