[C++ Primer Plus] 第3章、处理数据(一)程序清单
一、程序清单3.1(变量的一些知识点)
#include<iostream>
#include<climits>
using namespace std; void main()
{
cout<<"int is "<<sizeof(int)<<" bytes"<<endl;
cout<<"short is "<<sizeof(short)<<" bytes"<<endl;
cout<<"long is "<<sizeof(long)<<" bytes"<<endl;
cout<<"long long is "<<sizeof(long long)<<" bytes"<<endl<<endl; cout<<"Maximum values: "<<endl;
cout<<"int: "<<INT_MAX<<endl;
cout<<"short: "<<SHRT_MAX<<endl;
cout<<"long: "<<LONG_MAX<<endl;
cout<<"long long: "<<LLONG_MAX<<endl<<endl; cout<<"Minimum int value= "<<INT_MIN<<endl;
cout<<"bits per Byte: "<<CHAR_BIT<<endl; system("pause");
}

二、程序清单3.2(数据溢出)
#include<iostream>
#include<climits>
using namespace std; void main()
{
short sam=SHRT_MAX;
unsigned short sue=sam;
cout<<"Sam有"<<sam<<"元,Sue有"<<sue<<"元"<<endl;
cout<<"再给他们一元"<<endl;
sam++,sue++;
cout<<"现在,Sam有"<<sam<<"元,Sue有"<<sue<<"元"<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
cout<<"回到10年前一无所有的时候"<<endl;
sam=sue=;
cout<<"10年前,Sam有"<<sam<<"元,Sue有"<<sue<<"元"<<endl;
cout<<"偷吃猪蹄被逮住了,都被罚了一元"<<endl;
sam--,sue--;
cout<<"现在,Sam有"<<sam<<"元,Sue有"<<sue<<"元"<<endl; system("pause");
}

三、程序清单3.3+3.4(进制)
#include<iostream>
using namespace std; void main()
{
int a=;
int b=0x42;//16进制
int c=;//8进制
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl; system("pause");
}
cout默认以10进制输出
#include<iostream>
using namespace std; void main()
{
int a=,b=,c=;
cout<<"a="<<a<<endl;//cout默认以10进制输出
cout<<hex;//修改cout显示整数的方式,以16进制输出
cout<<"b="<<b<<endl;
cout<<oct;//以8进制输出
cout<<"c="<<c<<endl; system("pause");
}

四、程序清单3.6
#include<iostream>
using namespace std; void main()
{
char ch='M';
int i=ch;
cout<<ch<<"的ASCLL码为"<<i<<endl;
cout<<"给它+1"<<endl;
ch++;
i=ch;
cout<<ch<<"的ASCLL码为"<<i<<endl;
cout<<"用cout.put(ch)输出:";
cout.put(ch);//通过类对象cout来使用函数put()
cout.put('!'); system("pause");
}

五、程序清单3.7(转义字符)
#include<iostream>
using namespace std; void main()
{
cout<<"\a计划\"灭世\"现在正在启动\n";// /a发出一声振铃
cout<<"请输入您的密码:______\b\b\b\b\b\b";
long code;
cin>>code;
cout<<"\a您输入的密码为"<<code<<"...\n";
cout<<"\a密码已通过证实!计划启动!\n"; system("pause");
}

六、程序清单3.8(float精度限制)
#include<iostream>
using namespace std; void main(){
//通常cout会删除结尾的0,比如3.25000显示为3.25,调用cout.setf()将覆盖这种行为
cout.setf(ios_base::fixed,ios_base::floatfield);
float tub=10.0/3.0;
double mint=10.0/3.0;
const float million=1.0e6; cout<<"tub="<<tub<<",a million tubs="<<million*tub<<endl;
cout<<"ten million tubs="<<*million*tub<<endl;
cout<<"mint="<<mint<<",a million mints="<<million*mint<<endl; cin.get();//按下enter键结束
}

七、程序清单3.9
#include<iostream>
using namespace std; void main(){
float a=2.34E+22f;
float b=a+1.0f; cout<<"a="<<a<<endl;
cout<<"b-a="<<b-a<<endl; cin.get();//按下enter键结束
}

原因:2.34E+22是一个小数点左边有23位的数字,+1就是在第23位上+1.但是float类型只能表示数字中的前6位(或7位),因此修改第23位对这个值不会有任何影响。
八、程序清单3.10(算术运算符)
#include<iostream>
using namespace std; void main(){
float a,b;
cout.setf(ios_base::fixed,ios_base::floatfield);
cout<<"enter a number:";
cin>>a;
cout<<"enter a another number:";
cin>>b; cout<<"a="<<a<<",b="<<b<<endl;
cout<<"a+b="<<a+b<<endl;
cout<<"a-b="<<a-b<<endl;
cout<<"a*b="<<a*b<<endl;
cout<<"a/b="<<a/b<<endl; system("pause");
}
加法结果应为61.42,输出却是61.41998,这是因为float表示有效位数的能力有限。对于float,C++只保证6位有效位,如果需要更高精度,请使用double和long double。亲测,使用double类型之后,计算结果正确
九、程序清单3.11
#include<iostream>
using namespace std; void main(){
cout.setf(ios_base::fixed,ios_base::floatfield);
cout<<"Integer division:9/5="<</<<endl;
cout<<"Float division:9.0/5.0="<<9.0/5.0<<endl;
cout<<"Mixed division:9.0/5="<<9.0/<<endl;
cout<<"double constants:1e7/9.0="<<1e7/9.0<<endl;
cout<<"float constants:1e7f/9.0f="<<1e7f/9.0f<<endl; system("pause");
}


十、程序清单3.13
(类型转换:大->小不可以,long->float ×;小->大可以,short->long √)
#include<iostream>
using namespace std; void main(){
cout.setf(ios_base::fixed,ios_base::floatfield);
float tree();//等同于 float tree=3
int guess=3.9832;
int debt=7.2e12;
cout<<"tree="<<tree<<endl;
cout<<"guess="<<guess<<endl;
cout<<"debt="<<debt<<endl; system("pause");
}
float 6位精度,int舍弃小数,int无法存储7.2e12那么大的数。
#include<iostream>
using namespace std; void main(){
const int code=;
int x=;
char c1={};
char c2={};
char c3={code};
char c4={x};
x=;
char c5=x; cout<<"c1="<<c1<<endl;
cout<<"c2="<<c2<<endl;
cout<<"c3="<<c3<<endl;
cout<<"c4="<<c4<<endl;
cout<<"c5="<<c5<<endl;
system("pause");
}

#include<iostream>
using namespace std; void main(){
cout<<int('A')<<endl;//c++格式
cout<<(int)'a'<<endl;//c格式
system("pause");
}

十一、程序清单3.14
#include<iostream>
using namespace std; void main(){
int a,b,c;
a=19.99+11.99;
b=(int)19.99+(int)11.99;//c格式
c=int(19.99)+int(11.99);//c++格式 cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl; char ch='A';
cout<<"the code for "<<ch<<" is "<<int(ch)<<endl;
cout<<"Yes,the code is "<<static_cast<int>(ch)<<endl;//static_cast<typeName>(value)比传统强制类型转换更严格
system("pause");
}

[C++ Primer Plus] 第3章、处理数据(一)程序清单的更多相关文章
- C Primer Plus_第三章_数据和C_复习题与编程练习
Review long代替int类型变量的原因是什么? 在您的系统中,long可以容纳比int更大的数:如果您确实需要处理更大的值,那么使用一种在所有系统上都保证至少是32位的类型会使程序的可移植性更 ...
- C++ primer plus读书笔记——第3章 处理数据
第3章 处理数据 1. C++对于变量名称的长度没有限制,ANSI C只保证名称中的前63个字符有意义(前63个字符相同的名称被认为是相同的,即使第64个字符不同). 2. 对类型名(int)使用si ...
- C Primer Plus_第6章_循环_编程练习
1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...
- C Primer Plus_第四章_字符串和格式化输入输出_编程练习
Practice 1.输入名字和姓氏,以"名字,姓氏"的格式输出打印. #include int main(void) { char name[20]; char family[2 ...
- 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型
第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (8) -----第二章 实体数据建模基础之继承关系映射TPT
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 2-8 Table per Type Inheritance 建模 问题 你有这样一 ...
- C Primer Plus_第5章_运算符、表达式和语句_编程练习
Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...
- MVC5+EF6 简易版CMS(非接口) 第三章:数据存储和业务处理
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
- 《Programming WPF》翻译 第5章 5.数据模板和样式
原文:<Programming WPF>翻译 第5章 5.数据模板和样式 让我们想象一下我们想要实现TTT更有娱乐性的一个版本(这是大部分游戏中最重要的特色).例如,TTT的一种变体允许玩 ...
随机推荐
- C#队列Queue实现一个简单的电商网站秒杀程序
电商的秒杀和抢购,对程序员来说,都不是一个陌生的东西.然而,从技术的角度来说,这对于Web系统是一个巨大的考验.当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要. 我们 ...
- 【C++ 模板迭代器实例/半素数】
题目:判断一个数是不是两个素数的乘积,是输出YES,不是输出NO.数据范围为2-1000000. 为了解决这个问题,我们继续使用STL——vector & set,分别用来存储素数和半素数.为 ...
- PHP(表单元素)
表单: 1.收集用户的输入,发送到后台 <form action="后台地址" method="提交方式" enctype="multipart ...
- Java编程基础篇第三章
逻辑运算符 与(&)(&&),或(||)(|),非(!) &和&&的区别 &:无论&的左边真假,右边都进行运算 &&:当 ...
- Luogu 1068 - 分数线划定 - [快速排序]
题目链接:https://www.luogu.org/problemnew/show/P1068 题目描述世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对所有报名的选手 ...
- Ext 修改内容之后 不做任何动作 再次修改时的数据是原来第一次修改前的数据
转自 http://blog.csdn.net/jaune161/article/details/18220257 在项目开发中遇到这样一个问题,点击Grid中的一条记录并修改,修改完后保存并且刷新 ...
- eclipse 安装 lombok插件
下载插件 官网下载 :https://projectlombok.org/ 有些小伙伴官网可能打不开,现提供我的下载地址:https://files.cnblogs.com/files/niceyoo ...
- Kali2安装完成后的设置
1.安装中文输入法 vim /etc/apt/sources.list 全部删除,改为国内源 #中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling ...
- C#基础加强(8)之委托和事件
委托 简介 委托是一种可以声明出指向方法的变量的数据类型. 声明委托的方式 格式: delegate <返回值类型> 委托类型名(参数) ,例如: delegate void MyDel( ...
- 身份证运算符 is 和 is not(检查两个数据在内存当中是否是同一个值) | 逻辑运算符 and or not | 数据类型的判断 isinstance
# ###身份证运算符 is 和 is not(检查两个数据在内存当中是否是同一个值) var1 = 6 var2 = 6 print(id(var1),id(var2)) var1 = " ...