算术运算符是C语言的基本运算符之一,它同关系运算符和逻辑运算符一起,被包含在包括C语言在内的大多数编程语言中。
算术运算符包括两个一元运算符和五个二元运算符。一元运算符是只需要一个操作数的运算符,二元运算符需要两个操作数。下表列出了C语言支持的算术运算符。
一元运算符 | 二元运算符 |
---|---|
+ 一元正号运算符 | * 乘法运算符 |
- 一元负号运算符 | / 除法运算符 |
% 取余运算符 | |
+ 二元加法运算符 | |
- 二元减法运算符 |
一元运算符+
和-
用以强调某数值常量是正的或负的,是从右向左结合的,称为右结合的。相对应的是左结合。二元运算符都是左结合的。二元运算符中除%
取余运算符要求两个操作数必须是整数外,其余的运算符接受浮点数或整数作为其操作数。
当除法/
和取余%
运算符用于整数时,注意以下问题:
- 除法运算符丢掉运算结果的分数部分,值为结果的整数部分。
- 当操作数为负整数时,结果与实现相关。建议最好避免编写与实现相关的代码,以保证程序的兼容性。
C程序利用运算符优先级来解决同一表达式多个运算符的顺序问题。七个基本运算符中,一元运算符+
,-
的优先级高于*
,/
和%
运算符,二元运算符+
和-
的优先级最低。
C语言有众多的运算符,记住这么多运算符之间的优先级是非常困难的一件事。可以随手准备一个运算符表便于查阅。同时,由于C语言中()
具有最高的优先级,采用足够多的括号以确定编译器解释表达的方法是一个比较有效的方法。
/***************************************
* arithmetic_operator.c *
* *
* C语言中的算术运算符 *
***************************************/
#include <stdio.h>
int main()
{
int i = 5;
int j = 6;
int k = 3;
printf("i + j * k = %d\n", i + j * k);
printf("i + (j * k) = %d\n", i + (j * k));
printf("+i + j / k = %d\n", +i + j / k);
printf("(+i) + (j / k) = %d\n", (+i) + (j / k));
printf("i - j - k = %d\n", i -j - k);
printf("(i - j) - k = %d\n", (i - j) - k);
printf("i * j / k = %d\n", i * j / k);
printf("(i * j) / k = %d\n", (i * j) / k);
printf("-+j = %d\n", -+j);
printf("-(+j) = %d\n", -(+j));
return 0;
}
参考文献
- K.N. King 著,吕秀峰 译. C语言程序设计-现代方法. 人民邮电出版社