数据在内存中的存储——练习5

题目:

5.1
#include 
unsigned char i = 0;
int main()
{
 for(i = 0;i<=255;i++)
 {
 printf("hello world\n");
 }
 return 0;
}


5.2
#include 
int main()
{
 unsigned int i;
 for(i = 9; i >= 0; i--)
   {
    printf("%u\n",i);
  }
 return 0;
}

思路分析: 


5.1 

数据在内存中的存储——练习5_第1张图片

  •  结果是代码死循环,因为这里的char类型是 unsigned类型的,所以表示在进制数位中的符号位消失,取代的是一个可以参与运算的比特数位
  • 而且因为没有符号位,所以进制位可以肆无忌惮的+1,且在每次+1后进行了截断,而截断后的结果都不会超过 unsigned char的范围,也就是'255'
  • 因此i永远不会超过'255'导致进入死循环。

注意:unsigned char的范围是 '0'~'255' 因为无符号类型的是拥有大于等于0


 5.2

数据在内存中的存储——练习5_第2张图片

  • int i是无符号类型的,因为无符号类型永远是大于等于0的,所以for循环内的条件恒成立。
  • 哪怕进行了i--也不会因此变成小于0的数值。

数据在内存中的存储——练习5_第3张图片 

你可能感兴趣的:(数据存储,C语言,数据存储,c语言,算法,数据结构)