無符號減法:int和short存在天壤之別,無符號整形的減法結果爲負值時自動轉換爲無符號類型,而無符號短整形減法結果爲負值時轉換爲有符號類型。以下爲代碼比較:
#include <stdio.h>
int main(void)
{
unsigned int i, j;
unsigned short m, n;
//int型減法
i = 5;
j = 10;
printf("int型減法結果...\n");
if ((i - j) > 10000)
{
printf("(5-10) > 10000\n");
}
else
{
printf("(5-10) < 10000\n");
}
//short型減法
m = 5;
n = 10;
printf("short型減法結果...\n");
if ((m - n) > 10000)
{
printf("(5-10) > 10000\n");
}
else
{
printf("(5-10) < 10000\n");
}
}
int型減法結果...
(5-10) > 10000
short型減法結果...
(5-10) < 10000
請按任意鍵繼續. . .
我覺得應該這樣寫比較好:
#include <stdio.h>
int main(void)
{
unsigned int i, j, tmp1;
unsigned short m, n, tmp2;
//int型減法
i = 5;
j = 10;
printf("int型減法結果...\n");
tmp1 = i - j;
if (tmp1 > 10000)
{
printf("(5-10) > 10000\n");
}
else
{
printf("(5-10) < 10000\n");
}
//short型減法
m = 5;
n = 10;
printf("short型減法結果...\n");
tmp2 = m - n;
if (tmp2 > 10000)
{
printf("(5-10) > 10000\n");
}
else
{
printf("(5-10) < 10000\n");
}
}
打印結果:
int型減法結果...
(5-10) > 10000
short型減法結果...
(5-10) > 10000
請按任意鍵繼續. . .