[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的一种变体允许玩 ...
随机推荐
- M - COURSES
Consider a group of N students and P courses. Each student visits zero, one or more than one courses ...
- linux的基本操作(磁盘管理)
磁盘管理 [查看磁盘或者目录的容量 df 和 du] df 查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 df常用参数有 –i -h -k –m等 -i 使用 ...
- Java 中的泛型
泛型的一般意义: 泛型,又叫 参数多态或者类型参数多态.在强类型的编程语言中普遍作用是:加强编译时的类型安全(类型检查),以及减少类型转换的次数. Java 中的 泛型: 编译时进行 类型擦除 生成与 ...
- getItemAt
getItemAt(0) 获得第一行数据 getItemAt(1) 获得第二行数据
- mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
错误情况 解决办法: 首先查看mysql的命令 其次修改root用户的密码 set password for 'root'@'localhost' = password('123456'); 最后退出 ...
- Ubuntu常用操作命令
解压文件: tar -zxvf 文件名 -C 指定目录 从当前环境进入root环境: su,然后输入root密码
- smartFloat
$.fn.smartFloat = function() { var position = function(element) { var top = element.posi ...
- 个人小爱好:Operating System: three easy pieces第6章第5节——总结
总结 我们讨论了实现CPU虚拟化的部分底层机制,及我们统称为直接执行(direct execution)的一组技术.基本的思想十分简单明了:直接在CPU上运行你想运行的代码,但是你先得确保将硬件设置好 ...
- fiddler 修改
很多新手学习fiddler抓包的同学们都会对https网站抓包难或者抓不起来的问题无所适从,想寻求解决办法,没问题,这节课就来解决你的疑问! 最典型的网站就是目前的百度网站了,百度在近些年采用了htt ...
- oracle&mysql配置
===========pom.xml=========== <dependency> <groupId>com.oracle.jdbc</groupId> < ...