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的最大值取決於儲存每個字元所需...