C++ Primer Plus 代码学习解析(第三章 3.12-3.14)

3.12 modulus.cpp

#include <iostream>
int main()
{
    using namespace std;
    const int Lbs_per_stn = 14;
    int lbs;

    cout << "Enter your weight in pounds: ";
    cin >> lbs;
    int stone = lbs / Lbs_per_stn;      // whole stone
    int pounds = lbs % Lbs_per_stn;     // remainder in pounds
    cout << lbs << " pounds are " << stone
        << " stone, " << pounds << " pound(s).\n";

    return 0;
}
  1. 该程序主要演示了除法的商和模,模就是余数
  2. 在演示中1英石等于14磅,所以除数是14

3.13 assign.cpp

#include <iostream>
int main()
{
    using namespace std;
    cout.setf(ios_base::fixed, ios_base::floatfield);
    float tree = 3;     // int converted to float
    int guess = 3.9832; // float converted to int
    int debt = 7.2E12;  // result not defined in C++
    cout << "tree = " << tree << endl;
    cout << "guess = " << guess << endl;
    cout << "debt = " << debt << endl;
    // cin.get();
    return 0;
}
  1. 该代码讲了之前提到的类型转换的问题
  2. 首先是将int类型的3转换为float类型
  3. 之后是将float类型3.9832转换为int类型(导致了小数点之后数据丢失)
  4. 最后将7.2E12转换为int类型,导致了数据溢出(超出int的范围了),丢掉数据,使结果完全错误

3.14 typecast.cpp

#include <iostream>
int main()
{
    using namespace std;
    int auks, bats, coots;


    auks = 19.99 + 11.99;

    bats = (int)19.99 + (int)11.99;   // old C syntax
    coots = int(19.99) + int(11.99);  // new C++ syntax
    cout << "auks = " << auks << ", bats = " << bats;
    cout << ", coots = " << coots << endl;

    char ch = 'Z';
    cout << "The code for " << ch << " is ";    // print as char
    cout << int(ch) << endl;                    // print as int
    cout << "Yes, the code is ";
    cout << static_cast<int>(ch) << endl;       // using static_cast
    // cin.get();
    return 0;
}
  1. 该程序主要是强制类型转换,与c相同,首先进行计算,之后将总数进行转换

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值