int main()
{
int i = 20;
unsigned int j = 10;
printf("%d\n", i + j);
return 0;
}
算出-20和10的补码进行计算,计算后转为原码即可。
unsigned int i;
for (i = 9; i >= 0; i--)
{
printf("%u\n", i);
}
return 0;
这个计算,当i < 0后,-1,-2,-3,都是无符号数,所以数值很大,且一直循环。
char a[1000];
int i;
for (i = 0; i < 1000; i++)
{
a[i] = -1 - i;
}
printf("%d", strlen(a));
strlen检测到0之后就停止,所以要算到怎样会循环到0。char类型,范围为-128 到 127。当从-1到-128,就会转到127,再循环到1,再到0,总共255个数才能检测到0.其实可以画一个经典的图。一个圆圈,顶部是-1和0,底部是-128和127,从-1循环到-128,是逆时针旋转,于是再次循环就来到了127。最终结果就是255。
unsigned char i = 0;
int main()
{
for (i = 0; i <= 255; i++)
{
printf("hello world\n");
}
return 0;
}
无符号的char,范围是0-255,所以就很好地循环255个字符串。
结束。