mirror of
https://github.com/cc65/cc65.git
synced 2024-11-05 08:05:51 +00:00
35 lines
507 B
C
35 lines
507 B
C
|
/* bug #327 - Promoting u8 to s16 gives wrong result */
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdint.h>
|
||
|
|
||
|
static const uint8_t arr[2] = {
|
||
|
0,
|
||
|
255
|
||
|
};
|
||
|
|
||
|
static int16_t get16() {
|
||
|
return -arr[1];
|
||
|
}
|
||
|
|
||
|
static int16_t get16_2() {
|
||
|
return -(int16_t) arr[1];
|
||
|
}
|
||
|
|
||
|
char res = 0;
|
||
|
|
||
|
int main() {
|
||
|
|
||
|
printf("Value %d, should be -255\n", get16());
|
||
|
printf("Value %d, should be -255\n", get16_2());
|
||
|
|
||
|
if (get16() != -255) {
|
||
|
res++;
|
||
|
}
|
||
|
if (get16_2() != -255) {
|
||
|
res++;
|
||
|
}
|
||
|
|
||
|
return res;
|
||
|
}
|