zoukankan      html  css  js  c++  java
  • [C++ Primer Plus] 第3章、处理数据(一)程序清单

    一、程序清单3.1(变量的一些知识点)

     1 #include<iostream>
     2 #include<climits>
     3 using namespace std;
     4 
     5 void main()
     6 {
     7     cout<<"int is "<<sizeof(int)<<" bytes"<<endl;
     8     cout<<"short is "<<sizeof(short)<<" bytes"<<endl;
     9     cout<<"long is "<<sizeof(long)<<" bytes"<<endl;
    10     cout<<"long long is "<<sizeof(long long)<<" bytes"<<endl<<endl;
    11 
    12     cout<<"Maximum values: "<<endl;
    13     cout<<"int: "<<INT_MAX<<endl;
    14     cout<<"short: "<<SHRT_MAX<<endl;
    15     cout<<"long: "<<LONG_MAX<<endl;
    16     cout<<"long long: "<<LLONG_MAX<<endl<<endl;
    17 
    18     cout<<"Minimum int value= "<<INT_MIN<<endl;
    19     cout<<"bits per Byte: "<<CHAR_BIT<<endl;
    20 
    21     system("pause");
    22 }

    二、程序清单3.2(数据溢出)

     1 #include<iostream>
     2 #include<climits>
     3 using namespace std;
     4 
     5 void main()
     6 {
     7     short sam=SHRT_MAX;
     8     unsigned short sue=sam;
     9     cout<<"Sam有"<<sam<<"元,Sue有"<<sue<<""<<endl;
    10     cout<<"再给他们一元"<<endl;
    11     sam++,sue++;
    12     cout<<"现在,Sam有"<<sam<<"元,Sue有"<<sue<<""<<endl;
    13     cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    14     cout<<"回到10年前一无所有的时候"<<endl;
    15     sam=sue=0;
    16     cout<<"10年前,Sam有"<<sam<<"元,Sue有"<<sue<<""<<endl;
    17     cout<<"偷吃猪蹄被逮住了,都被罚了一元"<<endl;
    18     sam--,sue--;
    19     cout<<"现在,Sam有"<<sam<<"元,Sue有"<<sue<<""<<endl;
    20 
    21     system("pause");
    22 }

    三、程序清单3.3+3.4(进制)

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main()
     5 {
     6     int a=42;
     7     int b=0x42;//16进制
     8     int c=042;//8进制
     9     cout<<"a="<<a<<endl;
    10     cout<<"b="<<b<<endl;
    11     cout<<"c="<<c<<endl;
    12 
    13     system("pause");
    14 }

    cout默认以10进制输出

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main()
     5 {
     6     int a=42,b=42,c=42;
     7     cout<<"a="<<a<<endl;//cout默认以10进制输出
     8     cout<<hex;//修改cout显示整数的方式,以16进制输出
     9     cout<<"b="<<b<<endl;
    10     cout<<oct;//以8进制输出
    11     cout<<"c="<<c<<endl;
    12 
    13     system("pause");
    14 }

    四、程序清单3.6

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main()
     5 {
     6     char ch='M';
     7     int i=ch;
     8     cout<<ch<<"的ASCLL码为"<<i<<endl;
     9     cout<<"给它+1"<<endl;
    10     ch++;
    11     i=ch;
    12     cout<<ch<<"的ASCLL码为"<<i<<endl;
    13     cout<<"用cout.put(ch)输出:";
    14     cout.put(ch);//通过类对象cout来使用函数put()
    15     cout.put('!');
    16 
    17     system("pause");
    18 }

    五、程序清单3.7(转义字符)

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main()
     5 {
     6     cout<<"a计划"灭世"现在正在启动
    ";//  /a发出一声振铃
     7     cout<<"请输入您的密码:______";
     8     long code;
     9     cin>>code;
    10     cout<<"a您输入的密码为"<<code<<"...
    ";
    11     cout<<"a密码已通过证实!计划启动!
    ";
    12 
    13     system("pause");
    14 }

    六、程序清单3.8(float精度限制)

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main(){
     5     //通常cout会删除结尾的0,比如3.25000显示为3.25,调用cout.setf()将覆盖这种行为
     6     cout.setf(ios_base::fixed,ios_base::floatfield);
     7     float tub=10.0/3.0;
     8     double mint=10.0/3.0;
     9     const float million=1.0e6;
    10 
    11     cout<<"tub="<<tub<<",a million tubs="<<million*tub<<endl;
    12     cout<<"ten million tubs="<<10*million*tub<<endl;
    13     cout<<"mint="<<mint<<",a million mints="<<million*mint<<endl;
    14 
    15     cin.get();//按下enter键结束
    16 }

    七、程序清单3.9

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main(){
     5     float a=2.34E+22f;
     6     float b=a+1.0f;
     7     
     8     cout<<"a="<<a<<endl;
     9     cout<<"b-a="<<b-a<<endl;
    10 
    11     cin.get();//按下enter键结束
    12 }

    原因:2.34E+22是一个小数点左边有23位的数字,+1就是在第23位上+1.但是float类型只能表示数字中的前6位(或7位),因此修改第23位对这个值不会有任何影响。

    八、程序清单3.10(算术运算符)

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main(){
     5     float a,b;
     6     cout.setf(ios_base::fixed,ios_base::floatfield);
     7     cout<<"enter a number:";
     8     cin>>a;
     9     cout<<"enter a another number:";
    10     cin>>b;
    11 
    12     cout<<"a="<<a<<",b="<<b<<endl;
    13     cout<<"a+b="<<a+b<<endl;
    14     cout<<"a-b="<<a-b<<endl;
    15     cout<<"a*b="<<a*b<<endl;
    16     cout<<"a/b="<<a/b<<endl;
    17 
    18     system("pause");
    19 }

    加法结果应为61.42,输出却是61.41998,这是因为float表示有效位数的能力有限。对于float,C++只保证6位有效位,如果需要更高精度,请使用double和long double。亲测,使用double类型之后,计算结果正确

    九、程序清单3.11

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main(){
     5     cout.setf(ios_base::fixed,ios_base::floatfield);
     6     cout<<"Integer division:9/5="<<9/5<<endl;
     7     cout<<"Float division:9.0/5.0="<<9.0/5.0<<endl;
     8     cout<<"Mixed division:9.0/5="<<9.0/5<<endl;
     9     cout<<"double constants:1e7/9.0="<<1e7/9.0<<endl;
    10     cout<<"float constants:1e7f/9.0f="<<1e7f/9.0f<<endl;
    11 
    12     system("pause");
    13 }

    十、程序清单3.13

    (类型转换:大->小不可以,long->float ×;小->大可以,short->long √)

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main(){
     5     cout.setf(ios_base::fixed,ios_base::floatfield);
     6     float tree(3);//等同于 float tree=3
     7     int guess=3.9832;
     8     int debt=7.2e12;
     9     cout<<"tree="<<tree<<endl;
    10     cout<<"guess="<<guess<<endl;
    11     cout<<"debt="<<debt<<endl;
    12 
    13     system("pause");
    14 }

       float 6位精度,int舍弃小数,int无法存储7.2e12那么大的数。

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main(){
     5     const int code=66;
     6     int x=66;
     7     char c1={31325};
     8     char c2={66};
     9     char c3={code};
    10     char c4={x};
    11     x=31325;
    12     char c5=x;
    13 
    14     cout<<"c1="<<c1<<endl;
    15     cout<<"c2="<<c2<<endl;
    16     cout<<"c3="<<c3<<endl;
    17     cout<<"c4="<<c4<<endl;
    18     cout<<"c5="<<c5<<endl;
    19     system("pause");
    20 }

    1 #include<iostream>
    2 using namespace std;
    3 
    4 void main(){
    5     cout<<int('A')<<endl;//c++格式
    6     cout<<(int)'a'<<endl;//c格式
    7     system("pause");
    8 }

    十一、程序清单3.14

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void main(){
     5     int a,b,c;
     6     a=19.99+11.99;
     7     b=(int)19.99+(int)11.99;//c格式
     8     c=int(19.99)+int(11.99);//c++格式
     9 
    10     cout<<"a="<<a<<endl;
    11     cout<<"b="<<b<<endl;
    12     cout<<"c="<<c<<endl;
    13 
    14     char ch='A';
    15     cout<<"the code for "<<ch<<" is "<<int(ch)<<endl;
    16     cout<<"Yes,the code is "<<static_cast<int>(ch)<<endl;//static_cast<typeName>(value)比传统强制类型转换更严格
    17     system("pause");
    18 }

  • 相关阅读:
    知乎神回复:代码之间为什么要加空格?这个问题我是这样理解的!
    经验分享:一个 30 岁的人是如何转行做程序员,进入IT行业的?
    对于程序员来说,学历真的重要吗?为何都是高学历混的风生水起?
    教材、教参、教案有哪些区别?
    教参是什么
    教师面试指要
    教师资格证结构化面试是什么?会怎么考查?
    教师资格证面试试讲时可以戴手表吗
    讲师面试流程及试讲指导
    教师资格面试:试讲和说课的区别
  • 原文地址:https://www.cnblogs.com/little-monkey/p/7218776.html
Copyright © 2011-2022 走看看