你好,首先要測(cè)試一下你編譯器所定義的整型是多少字節(jié),用sizeof(int)測(cè)試一下,一般是4字節(jié),假如是4字節(jié)說(shuō)明是32位,這樣無(wú)符號(hào)和有符號(hào)整數(shù)區(qū)別在于第32位是1還是0,所以可以用一個(gè)數(shù)0x80000000=1000
創(chuàng)新互聯(lián)建站成立與2013年,先為江永等服務(wù)建站,江永等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為江永企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
0000
0000
0000
0000
0000
0000
0000(32),與整數(shù)做“與”運(yùn)算,假如最高位結(jié)果是1(即0x80000000),說(shuō)明原來(lái)整數(shù)是負(fù)數(shù),假如位0則是正數(shù)。
所以可以用如下代碼實(shí)現(xiàn)
int
yu(int
num)
{
return
(num
0x80000000)
;
}
之后在調(diào)用函數(shù)測(cè)試return值就可以了
#include?stdio.h
int?main()
{
double?a;
scanf("%lf",a);
if(a0)?printf("正數(shù)\n");
else?if(a0)?printf("負(fù)數(shù)\n");
return?0;
}
主函數(shù)中這么寫:
int a;
printf("input a number:");
scanf("%d",a);
if(a0)printf("%d is 正數(shù).",a);
else if(a==0)printf("%d is 0.",a);
else if(a0)printf("%d is 負(fù)數(shù).",a);
#includestdio.h
int main()
{
int i;
printf("請(qǐng)輸入數(shù)字\n");
scanf("%d",i);
if(i=0)
{
printf("這個(gè)數(shù)字為非負(fù)數(shù)");
}
else
printf("這個(gè)數(shù)字為負(fù)數(shù)");
}