1樓:匿名使用者
u%是無符號數,即只有正的。-1的原碼取為反碼是65535。2個位元組是16位,取值範圍是0到65535。
2樓:藏天地
應該是printf("%d,%u\n",k,k);
選dk你應該賦值了-1,以%d格式自然輸出是-1;
關鍵是%u以無符號整型資料輸出,-1在記憶體中是以補碼的形式存放的,佔兩個位元組,-1的補碼為11.。。。11(16個1)以無符號形式輸出自然就是65535了
3樓:匿名使用者
d16位二進位制格式為 11111111 11111111
按有符號數解釋(%d),為負1
按無符號數解釋(%u),為65535
4樓:十指跳舞的男人
d.-1,65535
5樓:匿名使用者
k都沒有初始化值,是一個隨機數吧
6樓:
貌似有錯吧,k沒有初始化,應該為%u答案排除法應該是選b.-1,65536!
設c語言中,一個int型資料再記憶體中佔兩個位元組,則unsigned int 型資料的取值範圍為??
7樓:匿名使用者
如果一個int佔兩個位元組就是16位
unsigned int 範圍是 00000000 00000000 到 11111111 11111111
因此是0到65535
8樓:冰夢雪痕
int佔2個位元組,就是16位,則int型的變數值的範圍為-2^15 ~ (2^15 - 1), 即-32768~32767
unsigned int取值範圍0~(2^16 - 1), 即0~65535
9樓:匿名使用者
int 再內bai
存佔多少位元組和編譯du器有關,一般情況是zhi4位元組而不dao是2位元組,檢視方式sizeof(int),
unsigned int取值專
範圍是屬0到2^32,若int位2位元組則範圍是unsigned int取值範圍是0到2^16,原因 :unsigned int是無符號的,最高位是資料位,共16bit,故0到2^16
10樓:匿名使用者
0~65535。
也就是0x 00 00到0x ff ff。
後者就是ff ff = 65535。
無符號整型的區別在於它的最高位不是符號位。
c語言中:unsigned int a=-2;printf("%u",a);輸出結果為多少?
11樓:
在16位int平臺下,輸出是65534;在32位int平臺下,輸出是4294967294。以32位int平臺為例,題中的unsigned int a=-2;語句在unsigned的修飾下,賦給變數a的是-2補碼的無符號值,即4294967294。但後面的printf("%u",a);的輸出並不與a是否為有符號數沒有關係,輸出是否為有符號數由"%u"中的控制符%u決定,這裡%u表示將變數a按無符號數輸出,所以輸出是4294967294。
因此,如果將unsigned int a=-2;改為int a=-2;,printf("%u",a);同樣輸出4294967294。即使是unsigned int a=4294967294;這樣定義a,用printf("%d",a);輸出就是-2;因為輸出是由控制符%d決定的。
12樓:頹廢前進
輸出結果為65534或者4294967294
因為在不同位的作業系統下,數值的表示位數是不一樣的。首先我們先明確一點:在計算機中,正數用原碼來計算(正數的原碼、補碼、反碼都是一樣的);負數是用補碼來計算的。
至於原因可以參考一下文章網頁連結就是把減法簡化為加法從而大大簡化計算機電路的過程。
首先在16位系統中,-2的原碼為1000 0000 0000 0010;補碼為:1111 1111 1111 1110;我們使用的unsigned為無符號數,那麼此時計算機會把我們的-2強制轉化為正數進行運算,即用1111 1111 1111 1110表示-2,即為65534.
在32位作業系統中,-2的原碼為:1000 0000 0000 0000 0000 0000 0000 0010;補碼為:1111 1111 1111 1111 1111 1111 1111 1110;同上述,計算機會強制輸出1111 1111 1111 1111 1111 1111 1111 1110所代表的十進位制數,即4294967294。
#include
#include
void main()
輸出結果:
65535 65535
-2 4294967294
13樓:
應該是4294967295-2+1=4294967294
因為unsigned int a=-2;這句會強制把負數,轉換成正數
14樓:匿名使用者
在vc等32位編譯系統上-2的補碼是11111111111111111111111111111110
若解釋為unsigned int則為4294967294
同理unsigned int a=-2;printf("%d",a);雖然定義a是unsigned型別,但printf();函式中解釋為int型別,輸出結果還是-2。記憶體中的2進位制資料不同的解釋方式,有不同的顯示結果。
15樓:
unsigned int 為 0--655351111 1111 1111 1111 為 65535-2用補碼錶示
1000 0000 0000 0010 取反加11111 1111 1111 1110
結果為 65534
16樓:匿名使用者
看你的機器是多少位的,32位的和64位的結果是不同的
下面程式有兩個printf 語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結果是 1a6 } 10
17樓:麥子
據本人推bai測本程式用du 十六進位制
輸出p和p+9的所指向數zhi據的地址。
dao而
版tc環境中int型別長度為2位元組
權。當p為194(十進位制為404)時,
p+9=404+2*9=422,換算後
十六進位制為1a6 。
論證完畢...
以上回答你滿意麼?
在C語言中把小數賦值給int型別的然後用d佔位符輸出,結果只輸出了整數部分
你前面定義的哪個型別,你可以試一試 l,小數定義也可以試一試double c語言的 ld d u是啥意思啊?這幾個都是c語言格式化輸入輸出時使用的格式符號。其中 u為誤寫,實際為 u。格式化輸出函式包括printf,fprintf,sprintf等等。格式化輸入函式包括scanf,fscanf,ss...
c語言裡constint和int有什麼區別const的作用是
1 內容不 e68a84e8a2ad62616964757a686964616f31333431333963同 constint p p可變,p指向的內容不可變,int const p p可變,p指向的內容不可變。int const p p不可變,p指向的內容可變 const int const p...
c語言變數型別設定
可能是受float型別精度 有效數字位數 的影響,將a的型別改為double double a 試試。他說的是運算子。一個變數,要定義型別,分為int整形,float浮點型,char字元型等,舉個例子,就像比賽分為男子比賽,女子比賽,殘疾人比賽一樣,定義只能按規定去參加。變數定義後也是一樣,必須要和...