C语言中表达式求值要注意的几点

参考:《C和指针》

  •  隐式类型转换

        C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符型和短整型操作数在使用之前被转换为普通整型,这种转换称为“整型提升”。缺省整型长度一般是计算机最合适的长度,因此精度提升不会降低速度,并且实现起来也很容易。

        在下面的例子中,a和b首先转换成整型进行计算,然后将结果截短并赋值给c

char a, b, c;

c = a + b;

  • 算术转换
        如果某个运算符的各个操作数属于不同的类型,那么除非其中一个操作数转换为另一个操作数的类型,否则操作就无法进行。下面的层次体系称为寻常算术转换。
                long double
                double
                float
                unsigned long int
                long int
                unsigned int
                int
        如果某个操作数在这上面的排名较低,那么它首先将转换为另一个操作数的类型,否则操作无法进行。

原文地址:https://www.cnblogs.com/jubincn/p/3381229.html