表达式:
5 + 10
5和10是运算对象,+是运算符。
在C语言中,一个或多个运算对象,0个或多个运算符,组成表达式。
每一个表达式都有一个结果。
如果在表达式后面加上;就会变成表达式语句,C语言中,表达式不能单独存在,必须以表达式语句的形式存在。
printf("%d\n",5 +10);
其中"printf("%d\n",5 +10);为函数调用表达式,5 +10为子表达式,在函数调用表达式后面已经加了分号,当然,函数调用表达式也有一个表达式结果,这个结果就是函数的返回值。
运算符:
+,- 像数学表达式一样加减:
当然,+,-也可以表示正负,但是,在C语言中我们称他们为符号运算符。
+用于标明表达式的正负,-用于改变表达式的正负,与加减运算符不同的是,仅需要在符号运算符的右侧有一个运算对象,+表达式的结果为右边运算对象的值,-表达式的结果为运算对象的相反数。
*为乘法运算符,两边各需要一个运算对象构成乘法运算符表达式,结果为运算对象相乘的值。
/为除法运算表达式。
/与其他表达式不同的是,在数学中,整数/整数不一定是整数。在C语言中,整型与整型进行运算,结果依然是整型,结果中的小数会被丢弃,这个过程称作截断。
%为求余运算符。
=赋值运算符
自增自减运算符
++
--
i++为后缀模式
++i为前缀模式
对于前缀模式来说,++运算对象构成前缀自增表达式,结果为运算对象值加一。额外作用:运算对象自增。
对于前缀模式来说,--运算对象构成前缀自减表达式,结果为运算对象减一。额外作用:运算对象自减。
对于后缀模式来说,运算对象++构成后缀自增表达式,结果为运算对象值本身。额外作用:运算对象自增。
对于后缀模式来说,运算对象--构成后缀自减表达式,结果为运算对象值本身。额外作用:运算对象自减。
何时产生额外作用?
额外作用在不同编译器有不同的发生时机。
例如:VS累积所有子表达式求值后才会进行额外作用。
GCC每完成一个子表达式就会立即产生额外作用。
最晚发生时机:完整表达式求值结束后进入下一步之前。
一元运算符:有一个运算对象,例如自增运算符。
二元运算符:有两个运算对象,例如赋值运算符,加法运算符。
运算符优先级:
四则运算符优先级和数学中是一样的。