[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的一种变体允许玩 ...
随机推荐
- 谈一谈 MPU6050 姿态融合(转)
姿态角(Euler角)pitch yaw roll飞行器的姿态角并不是指哪个角度,是三个角度的统称.它们是:俯仰.滚转.偏航.你可以想象是飞机围绕XYZ三个轴分别转动形成的夹角. 地面坐标系(eart ...
- Spark Streaming之dataset实例
Spark Streaming是核心Spark API的扩展,可实现实时数据流的可扩展,高吞吐量,容错流处理. bin/spark-submit --class Streaming /home/wx/ ...
- Vue2.0 $set()的正确使用方式
https://blog.csdn.net/panyang01/article/details/76665448
- 浏览器打开exe文件
<win-r> regedit 打开注册表,然后自定义协议 自定义协议注册表.reg 打开后导入 Windows Registry Editor Version 5.00 [HKEY_CL ...
- A Java back-end engineer's study notes
loveincode's notes 学习工作中的一些记录,收藏. 人气很高的链接库 计算机基础相关笔记 操作系统 , 编译原理 , 计算机网络 , 互联网协议... 常用数据结构与算法 Java 实 ...
- itoa()函数
itoa()函数 itoa():char *itoa( int value, char *string,int radix); 原型说明: value:欲转换的数据.string:目标字符串的地址.r ...
- 微信小程序之点赞和取消点赞
wxml代码 <image wx:if="{{collection}}" src="/images/boy.png" bindtap="toCo ...
- [ERROR] - Error reading string. Unexpected token: StartObject. Path 'formData', line 1, position 13.
公司流程框架: businessData 为 string 所有要使用JSON.stringify();
- mysql批量插入
有多种方式 其中效率高 要求低的方式 是 把sql拼接出来 后一次性commit: eg: public int insertBatch(List<PeccDetailModel> lis ...
- (三)juc高级特性——虚假唤醒 / Condition / 按序交替 / ReadWriteLock / 线程八锁
8. 生产者消费者案例-虚假唤醒 参考下面生产者消费者案例: /* * 生产者和消费者案例 */ public class TestProductorAndConsumer { public stat ...