zoukankan      html  css  js  c++  java
  • 关于unsigned的一些事儿

    思考以下程序的输出:

    int main()
    {
     unsigned i;
     for(i=9;i>=0;i--)
     {
         printf("%u ",i);
     }
      system("pause");
      return 0;
    }

    咋一看,这题简单的不能再简单!很多读者会不假思索回答:9 8 7 6 5 4 3 2 1 0

    但是如果在电脑上一运行就会大吃一惊,死循环!!为什么呢?

    其实很简单!

    i=9时打印9,没错!i=8时打印8,当i=0时打印0,当i=-1时,小心喽,并不会跳出循环!

    这是因为i为unsigned类型的,i=-1时在32位计算机中的存储形式为:1111 1111 1111 1111 1111 1111 1111 1111

    由于i为unsigned类型,符号位1当做数值最高位处理,即 i 实际上为2^32-1 ,该数大于0,故打印。i-1后仍非常大,故一直

    输出到0,然后又从2^32-1开始打印,如此循环打印。

  • 相关阅读:
    es删除索引
    真人快打11技能键位
    点到线段的距离
    行列快乐值
    按钮变色
    取数求和
    机器分配
    田忌赛马 问题
    雷达
    最小字典序
  • 原文地址:https://www.cnblogs.com/yanglf/p/2759482.html
Copyright © 2011-2022 走看看