33,311
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main()
{
unsigned int nA = 10;
int nB = -19;
unsigned int nC = 0;
nC = nA + nB;
if(nC > 0)
{
printf("%d\n", nC);
}
while(1);
return 0;
}
[root@Fedora13 tc]# cat a.c
#include <stdio.h>
int main()
{
unsigned int nA = 10;
int nB = -19;
unsigned int nC = 0;
nC = nA + nB;
if(nC > 0)
{
printf("%d, %u, %#x\n", nC, nC, nC);
}
return 0;
}
[root@Fedora13 tc]# make
gcc -o a a.c
[root@Fedora13 tc]# ./a
-9, 4294967287, 0xfffffff7
[root@Fedora13 tc]#
#include <stdio.h>
int main()
{
unsigned int nA = 10;
int nB = -19;
unsigned int nC = 0;
nC = nA + nB;
if(nC > 0)
{
printf("%u\n", nC);//%d就意味着把nC当作int来解释。。改为%u就当无符号十进制解释。。
}
while(1);
return 0;
}
#include <stdio.h>
void main()
{
short a = -1;
unsigned short int b = a;
printf("%u,%d\n", b, b);
}
同求,为什么我这个输出的b都是65535,
而把short 换成int 之后 %d得到的-1??