C语言 加减乘除运算

加减乘除是常见的数学运算,C语言当然支持,不过,C语言中的运算符号与数学中的略有不同,请见下表。
在这里插入图片描述

#include <stdio.h>
int main()
{
    int a = 12;
    int b = 100;
    float c = 8.5;
    int m = a + b;
    float n = b * c;
    double p = a / c;
    int q = b % a;
    printf("m=%d, n=%f, p=%lf, q=%d\n", m, n, p, q);
    return 0;
}
#include <stdio.h>
int main()
{
    int a = 12;
    int b = 100;
    float c = 8.9;
    int m = a - b;  // 变量参与运算
    int n = a + 239;  // 有变量也有数字
    double p = 12.7 * 34.3;  // 数字直接参与运算
    printf("m=%d, n=%d, p=%lf\n", m, n, p);
    printf("m*2=%d, 6/3=%d, m*n=%ld\n", m*2, 6/3, m*n);
    return 0;
}

对除法的说明
C语言中的除法运算有点奇怪,不同类型的除数和被除数会导致不同类型的运算结果:
当除数和被除数都是整数时,运算结果也是整数;如果不能整除,那么就直接丢掉小数部分,只保留整数部分,这跟将小数赋值给整数类型是一个道理。
一旦除数和被除数中有一个是小数,那么运算结果也是小数,并且是 double 类型的小数。

取余

取余,也就是求余数,使用的运算符是 %。C语言中的取余运算只能针对整数,也就是说,% 的两边都必须是整数,不能出现小数,否则编译器会报错。

另外,余数可以是正数也可以是负数,由 % 左边的整数决定:

  • 如果 % 左边是正数,那么余数也是正数;
  • 如果 % 左边是负数,那么余数也是负数。
#include <stdio.h>
int main()
{
    printf(
        "100%%12=%d \n100%%-12=%d \n-100%%12=%d \n-100%%-12=%d \n",
        100%12, 100%-12, -100%12, -100%-12
    );
    return 0;
}

简写

int a = 10, b = 20;
a += 10;  //相当于 a = a + 10;
a *= (b-10);  //相当于 a = a * (b-10);
a -= (a+20);  //相当于 a = a - (a+20);

自增(++)和自减(–)

#include <stdio.h>
int main()
{
    int a = 10, b = 20;
    printf("a=%d, b=%d\n", a, b);
    ++a;
    --b;
    printf("a=%d, b=%d\n", a, b);
    a++;
    b--;
    printf("a=%d, b=%d\n", a, b);
    return 0;
}

运行结果:
a=10, b=20
a=11, b=19
a=12, b=18

需要重点说明的是,++ 在变量前面和后面是有区别的:
++ 在前面叫做前自增(例如 ++a)。前自增先进行自增运算,再进行其他操作。
++ 在后面叫做后自增(例如 a++)。后自增先进行其他操作,再进行自增运算。
自减(–)也一样,有前自减和后自减之分。

#include <stdio.h>
int main()
{
    int a = 10, b = 20, c = 30, d = 40;
    int a1 = ++a, b1 = b++, c1 = --c, d1 = d--;
   
    printf("a=%d, a1=%d\n", a, a1);
    printf("b=%d, b1=%d\n", b, b1);
    printf("c=%d, c1=%d\n", c, c1);
    printf("d=%d, d1=%d\n", d, d1);
   
    return 0;
}

输出结果:
a=11, a1=11
b=21, b1=20
c=29, c1=29
d=39, d1=40

a、b、c、d 的输出结果相信大家没有疑问,下面重点分析a1、b1、c1、d1:

  1. 对于a1=++a,先执行 ++a,结果为 11,再将 11 赋值给 a1,所以 a1 的最终值为11。而 a 经过自增,最终的值也为 11。
  1. 对于b1=b++,b 的值并不会立马加 1,而是先把 b 原来的值交给 b1,然后再加 1。b 原来的值为 20,所以 b1 的值也就为 20。而 b 经过自增,最终值为 21。
  1. 对于c1=–c,先执行 --c,结果为 29,再将 29 赋值给c1,所以 c1 的最终值为 29。而 c 经过自减,最终的值也为 29。
  1. 对于d1=d–,d 的值并不会立马减 1,而是先把 d 原来的值交给 d1,然后再减 1。d 原来的值为 40,所以 d1 的值也就为 40。而 d 经过自减,最终值为 39。

可以看出:a1=++a;会先进行自增操作,再进行赋值操作;而b1=b++;会先进行赋值操作,再进行自增操作。c1=–c;和d1=d–;也是如此。

猜你喜欢

转载自blog.csdn.net/imxlw00/article/details/89288423