zoukankan      html  css  js  c++  java
  • 【提问】有关short和int溢出的一个有趣测试

    直接上代码:

    代码1:
    #include<stdio.h>

    int main()
    {
    unsigned short i=0;
    i--;
    printf("%u",i);
    return 0;
    }

    代码2:
    #include<stdio.h>

    int main()
    {
    unsigned short i=0;
    i--;
    printf("%d",i);
    return 0;
    }

    代码3:
    #include<stdio.h>

    int main()
    {
    unsigned int i=0;
    i--;
    printf("%u",i);
    return 0;
    }
    代码4:
    #include<stdio.h>

    int main()
    {
    unsigned int i=0;
    i--;
    printf("%d",i);
    return 0;
    }

    以上代码在32位xp系统vc6的开发环境下输出如下:

    65535

    65535

    4294967295

    -1

    输出结果很有意思,头两个i定义的时候为short,后两个i定义的时候为int,这里当类型为unsigned 时,-1会溢出,从而出现类似65535/4294967295的结果,但是当i为short和int时,以%d输出的结果告诉我们short始终溢出,而int没有,请问这是为什么呢?

  • 相关阅读:
    ElasticSearch-生命周期管理
    Alpha 冲刺五
    Alpha 冲刺四
    Alpha 冲刺三
    Alpha 冲刺二
    Alpha 冲刺一
    测试随笔
    校友录
    项目需求分析(淘校)
    团队选题报告(淘校)
  • 原文地址:https://www.cnblogs.com/hust_wsh/p/2216867.html
Copyright © 2011-2022 走看看