C++运算总结

C++的算术运算符有: + , - , * , \ ,% 五个。

运算符优先级: +, -    <    *, \, %

同级别运算符优先级,在实现时由系统确定。

 

除法(/)的行为取决于操作数的类型

若两个操作数都是整数则结果是整数,例:

  int       a = 1 / 3;  // a 为0

  double b = 1 / 3;  // b依然为零,等效于 double b = (int) 1/3, 在表达式中操作数1和3被看作是整数,所以表达式结果也为整数

  double c = 1.0 / 3;   //  c = 0.3333……

  dobble d = 1 / 3.0;   // d = 0.3333……

  double e = (double) 1/3 ;  // e = 0.3333.... ,  相当于   double(1) / 3

  double f = (double) (1/3); // f = 0, 相当于(double) (int) (1/3) 

 

  3 % -2 ==> 1

  -3 % 2 ==> -1

  -3 % -2 ==> 出错?

 

类型转换:

  可能存在问题的转换:

  1) double -> float, 精度(有效位数降低),值可能超出目标类型的范围;

  2) 浮点(double/float) -> 整型(int/unsigned i/ long/ short), 小数部分丢失,原来的值可能超出目标类型的取值范围;

  3) 大整型 -> 小整型, (e.g.: long -> short), 可能超出目标类型的取值范围,通常只复制(截取)右边的字节(低字节,)。

  例3.13 assign.cpp,P63.

 

  0赋值给bool变量时,将被转换为false;

  非零值赋给bool变量时,将会转换为true;

 

posted @ 2016-06-14 21:25  GregoRay  阅读(289)  评论(0编辑  收藏  举报