C++ Primer Plus 第三章笔记

他们都是无符号的

char16_t 用 u表示

char32_t用U表示 

bool  非0都是true 

尽量用const而不是#define来作为常量标注   1来可以限定类型,2来可以限定作用域范围

 

float类型的存储方式: 计算机会分别保存两部分 1部分保存的是值,另一部分是保存对值得缩小放大倍数 (10的倍数)

 

float的精度比double精度差 如果有可能计算到超过6位的情况下 就使用double  我感觉只要是float 超过3位就可以用double了

 

因为float的精度只有到前7位 而他这个加1.0 是在第23位添加  无影响 所以 这个结果是0

 

#include <iostream>

int main()
{
  using namespace std;
  float a = 2.34E+22f;
  float b = a + 1.0f;

  cout << "a = " << a << endl;
  cout << "b - a = " << b - a << endl;
  return 0;
}
E:\cpp\2019-4-12\3>.\fltadd.exe
a = 2.34e+022
b - a = 0

 C++ 表达式的运算顺序 先看优先级再看操作数的结合性  

计算时一定要考虑到float类型的精度问题 这货就到6位 剩下的就是四舍五入

 

 

关于除法的一些东西:

#include <iostream>

int main() {
  using namespace std;

  cout.setf(ios_base::fixed, ios_base::floatfield);
  cout << "Integer division: 9/5 = " << 9 / 5 << endl;
  cout << "Floating-point division: 9.0 / 5.0 = ";
  cout << 9.0 / 5.0 << endl;
  cout << "Mixed division: 9.0/5 = " << 9.0 / 5 << endl;
  cout << "double constants: le7/9.0 = ";
  cout << 1.e7 / 9.0 << endl;
  cout << "float constants: 1e7/9.0f = ";
  cout << 1.e7f / 9.0f << endl;
  return 0;
}

结果

E:\cpp\2019-4-12\3>divide.exe
Integer division: 9/5 = 1
Floating-point division: 9.0 / 5.0 = 1.800000
Mixed division: 9.0/5 = 1.800000
double constants: le7/9.0 = 1111111.111111
float constants: 1e7/9.0f = 1111111.125000

这表明  除法中其中有一位数是浮点型 结果就是浮点型

默认是double  如果加了f就按float来计算  就很容易损失精度

 

关于数据类型隐式转换

float 转 int 小数点直接截断, 并且  数值可能会超过int的最大值 这个转换的结果 C++并没有定义应该是什么 所以 很有可能是随机的。

精度高的转换成精度低的数据类型将造成数据的不准确。

 

 

有些编译器是不支持 直接将double或者float赋值给int型 会报错

 

两个short类型变量进行运算赋值给short类型的变量时 会先将这两个short的值转换为int然后进行运算,然后再转换成short。 这么干的原因是运算速度快。这情况也适用于unsigned short 。会转换成unsigned int 这样确保了不会损失数据

其他的类型自动转换规则

 

 

强制类型转换:

 

C++风格:long(i)或C风格 (long)i 都行

或者 static_cast<long> (i) : static_cast<typeName> (value) 这种转换更加严格。但是具体多严格 还没说 15章的时候才说- -好久

不改变i本身而是生成1个新的,指定类型的值(说话要说全 )

 

auto  声明   自动判断数据类型。 只是简单讲了下 在STL中才用的多(python不都是这样的么 )

第三章完结

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@凌晨三点半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值