0%

C++PrimerPlus_3.2运算符和类型转换

1. C++ 数学运算符

1.1. 5种基本的C++运算符

    • 加法运算
    • 减法运算
    • 乘法运算
  • / 除法运算(如果两个操作数都是整数,则执行整数除法,小数部分将被丢弃,结果为整数;如果有1个(或2个)操作数是浮点数,则小数部分将被保留,结果为浮点数)
  • % 求模。两个操作数必须都为整数

1.2. 类型转换

1.2.1. 初始化和赋值进行的转换

C++允许将一种类型的值赋给另一种类型的变量,这样做时,值将被转换为接受变量的类型

🍑 例子:

假设so_long的类型为long,thirty的类型为short,而程序为:

1
so_long = thirty; 

程序将thirty的值(short)扩展为long值,so_long将储存这个值,而thirty不变。


将一个值赋给取值范围更大的类型通常不会产生问题,反之,则会降低精度;

下面列出了潜在的问题

转换 潜在的问题
将较大浮点类型转换为较小的浮点类型,如将double转换为float 精度有效数位丢失
将浮点转整数 小数部分丢失
  • 将0赋给bool变量时,将被转换为false;而非零值将被转换为true;

1.2.2. 以{}方式初始化时进行的转换

1.2.3. 表达式中的转换

1.2.4. 传递参数时的转换

1.2.5. 强制类型转换

1.2.6. C++ 11 中的auto声明

auto声明让编译器能够根据初始值的类型推断变量的类型。如果使用了关键字auto,而不指定变量的类型,编译器将把变量的类型设置与初始值相同。

1
2
3
auto n = 100; // n is int
auto x = 1.5; // x is double(疑问:这里x也可以是float吗)
auto y = 1.3e12L // y is long double
-------------本文结束感谢您的阅读-------------