C语言基础要素(011):增量、减量运算

发布于:2025-03-06 ⋅ 阅读:(102) ⋅ 点赞:(0)

让变量自身加一或减一是一种常用的运算,C语言提供了增量与减量运算符支持这些操作。

增量运算(++)

让变量自身加1,可以这样实现:

int size = 3;
size = size + 1;    // 语句执行后 size 值为 4
size += 1;          // 语句执行后 size 值为 5

使用增量运算符(++)可以更便捷的完成工作,增量运算也称为自增运算,有两种语法形式。

  • 前置++:运算符在操作数之前,语句执行后操作数自增1,如 ++a;
  • 后置++:运算符在操作数之后,语句执行后操作数自增1,如 a++;

现在,上面的代码可以这样改写。

int size = 3;
++size;         // 前置++,语句执行后 size 值为 4
size++;         // 后置++,语句执行后 size 值为 5

乍一看,好像没什么区别;但当它们应用到复杂表达式或语句中时,二者的区别才得以显现。

#include <stdio.h>

int main()
{
    int a = 1, b = 1;
    int ap, bp;

    ap = a++;
    bp = ++b;

    printf("a\t b\t ap\t bp\t\n");
    printf("%d\t %d\t %d\t %d\t", a, b, ap, bp);

    return 0;
}

在这里插入图片描述

这两种模式的区别在于值的增加这一动作发生的时间点是不同的。

/* ap = a++;    // 后置++:使用a的值之后改变a,相当于下面的语句。
 *---------------------------------------------------------------*/
ap = a;         // 先使用a的值执行赋值操作
a++;            // 再让a自增1

/* bp = ++b;    // 前置++:使用b的值之前改变b,相当于下面的语句。
 *---------------------------------------------------------------*/
++b;            // 先让b自增1
bp = b;         // 再使用b的值执行赋值操作

让情况再复杂一点,假设a的初始值始终为1,我们分解一下p的值。

/* p = 2 * ++a;
 *---------------------------------------------------------------*/
 ++a;           // a(2)
 p = 2 * a;     // p(4)


/* p = 2 * a++
 *---------------------------------------------------------------*/
 p = 2 * a;     // p(2)
 a++;           // a(2)

观点:将增量运算符应用于复杂表达式,会使程序不易阅读,不建议使用!

减量运算(–)

减量运算也称为自减运算,运算符(–)使变量自减一,也有前缀与后缀运算之分。

#include <stdio.h>

int main()
{
    int a = 1, b = 1;
    int va, vb;

    va = a--;
    vb = --b;

    printf("a\t b\t va\t vb\t\n");
    printf("%d\t %d\t %d\t %d\t", a, b, va, vb);

    return 0;
}

在这里插入图片描述

练习

  1. 增量运算符属于单目还是双目运算符?
  2. 对字符’A’应用增量运算符,打印出字符’ABCD’。
  3. 编写程序验证一下++--在double类型上是否可行。

网站公告

今日签到

点亮在社区的每一天
去签到