强制类型转换

     注意:只是将表达式的值的类型强制转换为指定类型,变量本身的类型和值都不改变

用%f的输入和输出,变量不能定义为double,必须是float

逗号运算符的功能

  1. 是把两个表达式的连接起来组成一个表达式。
  2. 一般形式为:表达式1,表达式2
  3. 求值的过程是分别求两个表达式的值并用表达式 2 的值作为整个逗号表达式的值
  4.  k=(x,y);返回k=y;

为什么需要常量?如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?

  1. 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。
  2. 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。
  3. 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。

如何合理使用常量?

       尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串。C++ 语言可以用 const 来定义常量,也可以用 #define 来定义常量。

const 与#define 的对比?前者比后者有更多的优点:

  1. const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。
  2. 有些集成化的调试工具可以对 const 常量进行调试,但是不能对宏常量进行调试。
  3. 在C++ 程序中只使用const 常量而不使用宏常量,即 const 常量完全取代宏常量。

常量定义规则:

  1. 需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中。
  2. 如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不应给出一些孤立的值。

提高效率:对乘方运算和乘法运算的改造

当y=nx和 y=x^n中n较小时,把乘法变加法,把乘方变乘法。 

巧用异或运算法则(转换为二进制做异或)实现两数值交换

第三章-算术运算符

a     01              11               11

b     10              10               01

a^b 11 a=3        01 b=1       10 a=2

第三章-算术运算符

表达式与赋值中的自动类型转换规则

第三章-算术运算符

  1. 纵向箭头表示必然的转换,即将所有的char和short都提升为int,所有的float都提升为double(自动类型转换:所有的char和short都提升为int,所有的float都提升为double
  2. 完成以上转换以后其他类型转换将根据参与运算的操作数类型按由低向高的方向转换(其余则是由低到高自动类型转换
  3. 图中横向箭头表示不同类型数据混合运算时由低向高的类型转换方向,但不代表转换的中间过程。
  4. 赋值中的自动类型转换规则是:在一个赋值语句中,若赋值运算符左侧(目标侧)变量的类型和右侧表达式的类型不一致,则将右侧表达式的值转换成左侧变量的类型。(若左右类型不同,则将右边根据左边来统一类型

浮点数不能做求余运算

相关文章: