仓库源文站点原文


title: C 语言自增自减运算辨析 layout: post categories: C语言 tags: C语言 自增运算 自减运算

excerpt: C语言自增与自减运算辨析

c语言中,自增(++)和自减(--)运算是很有c语言“感觉”的一种运算符,但是在实际编写中,尤其对初学者或者很久没接触它的,会对它的原理和运算结果产生混淆,接下来做详细辨析。

自增运算(++)

语法为:a++,其结果与:a = a + 1 一样,也和:a += 1 一样,作用很明显,方便阅读,减小代码量。例如下面的例子,就能看出明显的效果了:

((3+a)*sqrt(3)/(a%2))=((3+a)*sqrt(3)/(a%2))+1;

/*简化后*/
((3+a)*sqrt(3)/(a%2))++;

辨析

自增也可以表示为 ++a它们都能把a 的值加 1,但是两个表达式的值却不同,用一个例子说明:

#include<stdio.h>
int main()
{
    int a = 1, b = 1, a2, b2;
    a2 = a++;
    b2 = ++b;
    printf("a = %d, b = %d, a2 = %d, b2 = %d", a, b, a2, b2);
}

输出结果为:

a = 2, b = 2, a2 = 1, b2 = 2

其实,a++ 的值为 a 本身,++a 的值为 a+1 后的值。

也可以按教科书那种记:

b = a++ 是先赋值后运算,即先 b=a,然后 a++ b = ++a 是先运算后赋值,即先 ++a,然后 ++a

自减运算

自减运算原理和辨析与上面自增运算相似,a-- 等于 a = a -1 ,表达式 a-- 的值为 a ,表达式 --a 的值为 a-1