前言:
C语言中很多地方都会用自加(++)、自减(--)运算符来参与一些运算,这也是C语言的主要特色之一, 如果可以掌握并合理的利用这一特性,可以优化我们的C程序。 而自加自减也是对于刚接触C语言编程的人来说,比较难想通,很容易造成错误,可是考试的卷子也经常出现类似的题目。
自增自减的定义
自增++:使变量的值加1
自减--:使变量的值减1
++、-- 单目运算符,结合方向从右至左,优先级为2
自增包含:前置自增和后置自增
前置自增(++i):会先使用原来的变量值参与运算,然后再+1
后置自增(i++):会先使变量的值+1,之后在参与运算。
例子:
细看:a的初始化值为5,a++根据含义是先赋值在+1,所以第一次输出a++的值其实是a的值,再次输出的是运算后的值6。
b的初始值为5,++b的含义是先++在赋值,所以第一次输出++b的值就是变量+1后的值,再次输出b的值就是变化后的值。
自减包含:前置自减和后置自减
前减自增(--i):会先使用原来的变量值参与运算,然后再-1
后减自增(i--):会先使变量的值-1,之后在参与运算。
例子:
细看:a的初始化值为5,a--根据含义是先赋值在-1,所以第一次输出a--的值其实是a的值,再次输出的是运算后的值6。
b的初始值为5,--b的含义是先--在赋值,所以第一次输出--b的值就是变量-1后的值,再次输出b的值就是变化后的值。
自增自减运算:自增自减运算符自能用于变量,不能用于常量或者表达式
i+++j??? 是i+(++j) 还是 (i++)+j呢?
注:为避免二义性,自增自减参与运算的时候要加括号括起来。
给大家一带思考题???
对于这个问题是对于不同的编译器的解析会有所不同,欢迎讨论。