[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的一种变体允许玩 ...
随机推荐
- 【CF613D】Kingdom and its Cities 虚树+树形DP
[CF613D]Kingdom and its Cities 题意:给你一棵树,每次询问给出k个关键点,问做多干掉多少个非关键点才能使得所有关键点两两不连通. $n,\sum k\le 10^5$ 题 ...
- HTML5在手机端实现视频全屏展示
最近做项目,遇到一个问题,在手机上要实现视频的全屏播放功能.测试了很久,终于找到解决办法. 第一种:将视频放大来控制. 视频在播放的时候,全屏是根据高度来的,如果设置视频 video 标签的宽度是 1 ...
- 查看集成环境 phpstudy 中 mysql 版本号
1. 打开面板 2.其他选项菜单 3. Mysql工具 4. mysql命令行 5.输入密码,回车.phpstudy mysql默认 root 6.运行 select version();
- Newtonsoft.Json转换强类型DataTable错误:Self referencing loop detected with type ......
问题,在使用Newtonsoft.Json对强类型的DataTable进行系列化时会出现循环引用错误 解决办法,不要直接系列化强类型的DataTable,改为 JsonConvert.Serializ ...
- 2018今日头条杯 E-Jump a Jump
Problem E. Jump A JumpInput file: standard inputOutput file: standard outputTime limit: 1 secondsMemor ...
- PAT甲级1143 Lowest Common Ancestor【BST】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805343727501312 题意: 给定一个二叉搜索树,以及他的前 ...
- 通过阿里云命令行工具 aliyuncli 购买服务器
开始想通过 aliyuncli 的 golang 源码进行编译安装(注:python 版的 aliyuncli 已不再维护),但没成功,详见 通过 golang 源码编译阿里云命令行工具 aliyun ...
- Gym 101981I - Magic Potion - [最大流][2018-2019 ACM-ICPC Asia Nanjing Regional Contest Problem I]
题目链接:http://codeforces.com/gym/101981/attachments There are n heroes and m monsters living in an isl ...
- 多线程Thread
多线程的意义 使用多线程可以充分利用CPU资源.提高CPU的使用率,采用多线程的方式去同时完成几件事情而不互相干扰.在处理大量的IO操作或处理的情况需要花费大量的时间时(如:读写文件,视频图像的采集, ...
- spark组件笔记
SparkContext 中最重要的3个组建: 1 TaskScheduler (包含两个内容,TaskSchedulerImpl和SparkDeploySchedulerBackend)-用于向Ma ...