c語言資料型別問題

2022-03-12 09:16:00 字數 975 閱讀 6532

1樓:匿名使用者

原因有兩個:

1. (a+b>6)?

是因為你的計算是在編譯器遇到 unsigned int 和 int 的計算時, 自動將 int 轉為 unsigned int 處理

a+b 就會是無符號的整形數字, a+b>6 就會返回真值 true, 執行 printf(">6")

2. printf("\n%d",a+b);

是因為是用格式化輸出符號是%d 輸出為整形.

下面的格式供你參考

%d 輸出為整形, %ld 輸出為長整型, %hd 輸出為短整型 %u 輸出為無符號整形, %lu 輸出為無符號長整形, %hu 輸出為無符號短整型.

2樓:

(a+b>6)?printf(">6"):printf("<=6");的意思是a+b是否大於6,大於則輸出">6",否則輸出"<=6",

unsigned,就是無符號的意思,正負符號,signed(一般不寫出來是預設的) int能儲存的資料的範圍為-32768~32767,而unsigned能儲存的資料範圍則是0~65535。

unsigned int 與 int 相加,會將int 轉換成unsigned int,而unsigned int是不可能有負數的,所以變成了6+20,肯定大於6了。

第二個問題由於在輸出時指定了%d,所以結果會轉換成int,就是6+(-20)了。

3樓:曠飛白

c語言有所謂隱式轉換,運算子兩邊型別不一致會向精度高的方向自動轉換。

unsigned int 與 int 相加,會將int 轉換成unsigned int

而最後的依據列印,由於是%d 而不是 %u,所以又轉換成int型

4樓:匿名使用者

把unsigned int 改成 int

如果不該的話你看-14和6比較他們是按補碼做減法結果為-8沒有產生借位,所以表示式為整輸出》6

西門子plc資料型別,西門子PLC資料型別

西門子plc程式設計基礎之資料型別入門學習 上 bool 布林量 就是開關量 只有 0,1 byte 位元組 word 字 16位整 e69da5e6ba9062616964757a686964616f31333337616565數 dword 雙字 32位整數 int 帶符號16位整數 dint ...

求vb資料型別大全

資料型別概述 以下 顯示所支援的資料型別,以及儲存空間大小與範圍。資料型別 儲存空間大小範圍 byte1 個位元組0 到 255boolean2 個位元組true 或 falseinteger 2 個位元組 32,768 到 32,767long 長整型 4 個位元組 2,147,483,648 到...

ORACLE中有哪些資料型別,oracle 所有的資料型別有哪些?

varchar2 size 可變長度的字串,其最大長度為size個位元組 size的最大值是4000,而最小值是1 你必須指定一個varchar2的size nvarchar2 size 可變長度的字串,依據所選的國家字符集,其最大長度為size個字元或位元組 size的最大值取決於儲存每個字元所需...