现在的位置: 首页 > 综合 > 正文

如此转换

2017年12月15日 ⁄ 综合 ⁄ 共 896字 ⁄ 字号 评论关闭

    类型转换

    分点1 当一个运算符的几个操作数类型不同时,就需要进行类型转换;

    分点1 一般来说,自动转换会把“比较窄的”操作数转换为“比较宽”的操作数,并且不会丢失信息;

    分点1 不允许进行无意义的转换,比如将float型数作为数组下标值;

    分点1 针对可能丢失信息的转换,编译器会给出警告;

    分点1 C语言并没有指定char类型的变量是无符号的还是有符号的,当把一个char类型值转换为int类型值时,其结果可能为正,可能为负,取决于机器;

    分点1 C语言的定义保证了机器的标准打印字符集中的字符不会是负值,因此,出现表达式中的字符的值都是正的;

    分点1 为了保证程序的可移植性,如果要在char类型的变量中存储非字符数据,最好指定signedunsigned

    分点1 一般的隐式转换会将较低的类型提升为较高的类型,最终结果也为较高类型;

    分点1 在没有unsigned类型时,可以遵循下面非正式的的规则:

    关键 如果其中一个操作数为long
    double
    ,另一个操作数也被转换为long double

    关键 如果其中一个操作数为double,另一个操作数也被转换为double

    关键 如果其中一个操作数为float,另一个操作数也被转换为float

    关键 charshort类型转换为int(除非强制,无条件执行);

    关键 如果其中一个操作数为long,另一个操作数也被转换为long

    分点1 表达式中的float类型不会再自动转换为double型(一般来说,数学函数使用双精度型,而float型主要是为了在使用较大的数组时节省存储空间,有时也为了节省运行时间。);

    分点1 当较长的整数转换为较短的整数或者char类型时,超出的高位部分会被丢弃;

    分点1 float转换为int时,小数部分被丢弃;

    分点1 double转换为float类型时,进行四舍五入还是进行精度截取,取决于具体实现;

    分点1 在没有函数原型的情况下,charfloat会自动转换为intdouble,这种情况下,应该把函数参数类型声明为intdouble

    分点1 在任何表达式中都可以使用一元运算符——强制类型转换:(类型名)表达式;

    分点1 强制类型转换不会修改原操作数;

    分点1 不匹配函数原型的参数在进入函数前,会进行自动(不需要显式使用)强制类型转换。

抱歉!评论已关闭.