c++的准备知识13

1.类型转换,c++丰富的类型允许根据需求选择不同的类型,这也使得计算机的造作更复杂,例如,将两个
  short值相加涉及硬件编译指令肯呢个会与将两个long值相加不同,由于11中整型和3中浮点型,因此,
  计算机需要处理大量不同的情况,尤其是对不同类型进行运算时,为处理这种潜在的混乱,C++自动执行
  很多类型转换:
  a,将一种算术类型的值赋给另一种算术类型的变量时,C++将对值进行转换:
  b,表达式中含不同的类型时,C++将对值进行转换:
  c将参数转递给函数时,C++将对值进行转换。


2.初始化和赋值进行的转换;C++允许将一种类型的值赋给另一种类型的变量,这样做时,值将被转换成接
  受变量的类型。例如假设so-long的类型为long,thirty的类型为short,而程序中包含
  so-long=thirty;
  则进行赋值时,程序thirty的值(通常是16位)扩展为long值(通常为32位)。扩展后将得到一个新值
  这个值被存在so-long中,而thirty的内容不会改变。
  将一个值赋给值取值范围更大的类型通常不会导致什么问题,例如将so-long变量并不会改变这个值,
  只是占用的字节更多,然而,将一个很大的long值(如2111222333)赋给float变量将降低精度。因为
  float只有6为有效数字.这个值将被四舍五入为2.11122E9.


3.潜在的数值转换问题。
  a,将较大的浮点类型转换为较小的浮点类型,如将double转换为float,潜在问题:精度降低,值可能超
  出目标类型的取值范围,值这种情况下,结果是不确定的。
  b,将浮点类型转换为整型,潜在为题:小数部分丢失,原来的值可能超出目标类型的取值范围,这种情况
  结果是不确定的
  c,将较大的整型转换为较小的整型,如将long转换为short,潜在为题:原来的值可能超出目标的取值范围
  通常值赋值右边的字节。
  将0赋给bool时,将被转换为false:而非零值将被转换为true。
  将浮点值赋给整型将导致两个问题,首先将浮点值转换为整型会将数字截短。其次float值对于int变量来说
  可能太大了。在这种情况下,C++并没有定义结果应该是什么:这意味着不同的现实反应可能不同。

 

posted @ 2016-08-06 15:37  都是木头  阅读(134)  评论(0编辑  收藏  举报