从头学C(16)算术运算符

0

第二章 类型、运算符与表达式 >> 2.5 算术运算符

二元运算符包括:+(加)、-(减)、*(乘)、/(除)、%(取余)。

要特别注意的是,整数做除法的结果会被截去小数点部分(即舍位),如前面摄氏温度和华氏温度转换的程序中,5/9会得到结果0,而5.0/9.0则会得到一个带小数点的浮点数。

取余运算符是求两个数相除后的余数,能被整除时则结果为0,比如 10 % 3 = 1,10 % 5 = 0。根据这个特性,我们可以用下面的语句来判断一个年份是否为闰年:

if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
        printf("%d is a leap year\n", year);
else
        printf("%d is NOT a leap year\n", year);

要注意的是:取余运算符不能用于计算浮点型(float或double)

另外,在有负操作数的情况下,整数除法的截取方向、取余数结果的符号取决与具体机器的实现,这和处理上溢、下溢的情况是一样的。我机器的计算结果如下

#include <stdio.h>

int main(void)
{
        printf("%d\n", 7/3);           //结果为2
        printf("%d\n", (-7)/3);        //结果为-2
        printf("%d\n", 7/(-3));        //结果为-2
        printf("%d\n", (-7)/(-3));     //结果为2

        printf("%f\n", 7.0/3.0);       //结果为2.333333
        printf("%f\n", (-7.0)/3.0);    //结果为-2.333333
        printf("%f\n", 7.0/(-3.0));    //结果为-2.333333
        printf("%f\n", (-7.0)/(-3.0)); //结果为2.333333

        return 0;
}

关于运算符的优先级,我们会学习过所有运算符后,同一列举排序。

Leave A Reply