所以我使用mbed接口使用LPC1768。
此片段:
int16_t test = -1;
test -= 1;
printf("Value: %d\n", sizeof(test));
if (test== 0xFFFE) {
printf("It's stayed the same.\n");
} else if (test== 0xFFFFFFFE) {
printf("It's been extended.\n");
} else {
printf("None\n");
}
打印出来 价值:2 它已被延长。
我怎么能修改它以便它打印出来"它保持不变。"?目标是
int16_t test = -1
使测试为16位值,并设置所有位。
答案 0 :(得分:2)
fadein
和0xFFFFFFFE
都是0xFFFE
个常量。前者超出int
的范围,因此它溢出到负数(-2),然后int
操作数被扩展为short
(带符号扩展名)并且比较成功。后者相当于值65534,不等于-2。
要使测试成功,请将文字int
投射到0xFFFE
,这会导致它溢出到值-2:
int16_t