![](/img/trans.png)
[英]How to determine whether a 32-bit/64-bit value has a certain 16-bit value?
[英]how to get a true 16-bit value?
所以我使用的是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位。
0xFFFFFFFE
和0xFFFE
都是int
常量。 前者超出了int
的范圍,因此溢出到負數(-2),然后將short
操作數擴展為int
(帶符號擴展名),並且比較成功。 后者等於值65534,不等於-2。
為了使測試成功,投字面0xFFFE
到int16_t
,這將導致其溢出到值-2:
if (test == static_cast<int16_t>(0xFFFE)) {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.