3.2 exceed.cpp

3.2 exceed.cpp

1 程序清单 3.2

  1. exceed.cpp

    // exceed.cpp --exceeding some integer limits
    #include <iostream>
    #include <limits>
    #define ZERO 0 // makes ZERO symbol for 0 value
    int main()
    {
    using namespace std;
    short sam = SHRT_MAX; // initialize a variable to max value
    unsigned short sue = sam; // okay if variable sam already defined
    cout << "Sam has " << sam << " dollars and Sue has " << sue;
    cout << "dollars deposited." << endl
    << "Add $1 to each account." << endl << "Now ";
    sam = sam + 1;
    sue = sue + 1;
    cout << "Sam has " << sam << " dollars and Sue has " << sue;
    cout << " dollars deposited.\nPoor Sam!" << endl;
    sam = ZERO;
    sue = ZERO;
    cout << "Sam has " << sam << " dollars and Sue has " << sue;
    cout << " dollars deposited." << endl;
    cout << "Take $1 from each account." << endl << "Now ";
    sam = sam - 1;
    sue = sue - 1;
    cout << "Sam has " << sam << " dollars and Sue has " << sue;
    cout << " dollars deposited." << endl << "Lucky Sue!" << endl;
    return 0;
    }
  2. 运行结果

    Sam has 32767 dollars and Sue has 32767dollars deposited.
    Add $1 to each account.
    Now Sam has -32768 dollars and Sue has 32768 dollars deposited.
    Poor Sam!
    Sam has 0 dollars and Sue has 0 dollars deposited.
    Take $1 from each account.
    Now Sam has -1 dollars and Sue has 65535 dollars deposited.
    Lucky Sue!

2 说明

  1. 以上结果输出来自运行64位Windows7 系统。

  2. 典型的整型溢出行为

    3.1

posted @   kaizenly  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
历史上的今天:
2019-01-17 mysql 终止 存储过程
打赏

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示