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。