borland如何將無符號整型轉換爲short?Borland C/C++無符號整型縮寫
#include <stdio.h>
void main() {
short sNum = 57000;
unsigned short usNum = sNum;
unsigned int uiNum;
printf("\r\nsNum = %d", sNum);
printf("\r\nusNum = %u", usNum);
//cast 1: short -> unsigned int
uiNum = sNum;
printf("\r\nuiNum = %u", uiNum);
//cast 2: unsigned short -> unsigned int
uiNum = (unsigned short)sNum;
printf("\r\nuiNum = %u", uiNum);
}
給我的輸出:
sNum = -8536
usNum = 57000
uiNum = 4294958760
uiNum = 57000
爲什麼我不中投1中得到57000:短unsigned int類型(?有沒有隱式轉換爲無符號短投給無符號整型前)?
好的那一個說法,但問題是,當您使用與其他簽署變量變量,則使用的-8536值。 – harry 2010-11-28 12:31:34
不,在第二種情況下,您會得到未定義的行爲,將錯誤的類型傳遞給`printf`。 (從技術上講,如果值是正數,我相信你可以傳遞`int`來代替`unsigned`,因爲表達式必須是相同的,但這裏是你傳遞的'int'(sNum的提升值`)是負數)。除非`int`和`short`具有相同的大小,否則我不認爲它可以打印57000。 – 2010-11-28 13:22:48