首页 > 编程笔记

C语言算术运算符和表达式

算术运算符和表达式接近于数学上用的算术运算,包含了加、减、乘、除,其运算的规则基本上是一样的。但是C语言中还有其特殊运算符和与数学不同的运算规则。

算术运算符

C语言基本的算术运算符有5个,如下表所示。
算术运算符 说明
+ 加法运算符或正值运算符
- 减法运算符或负值运算符
* 乘法运算符
/ 除法运算符
% 求模运算符或求余运算符

算术表达式

C语言的算术表达式如同数学中的基本四则混合运算,在实际中运用得十分广泛。简单的算术表达式如下表所示。
算术表达式举例 数学中的表示 含义 表达式的值
2+3 2+3 2 和 3相加 5
2-3 2-3 2 减去 3 -1
2*3 2×3 2 和 3 相乘 6
2/3 2÷3 2 除以 3 0
2%3   2 对 3 求余数 2

复杂的算术表达式,如下所示:

% 运算符

%运算符要求两侧的运算分量必须为整型数据。这个很好理解,如果有小数部分,就不存在余数了。例如,6.0%4 为非法表达式。

对负数进行求余运算,规定:若第1个运算分量为正数,则结果为正;若第1个运算分量为负,则结果为负。

/ 运算符

/运算符如果前后两个运算分量都为整数,则商也是整数,否则商为实数。

范例

我们通过两个范例来学习算术运算符和表达式的使用。

【示例1】使用算术运算符计算结果。
#include <stdio.h>
int main()
{
    int a=99;  /*定义整型变量a、b、c、d,并分别赋初值*/
    int b=5;
    int c=11;
    int d=3;
    printf("a-b=%d\n",a-b); /*输出a-b的结果*/
    printf("b*c=%d\n",b*c); /*输出b*c的结果*/
    printf("a/b=%d\n",a/b); /*输出a/b的结果*/
    printf("a%b=%d\n",a%b); /*输出a%b的结果*/
    printf("a%%d+b/c=%d\n",a%d+b/c);  /*输出a%d+b/c的结果*/
}
运行结果:
a-b=94
b*c=55
a/b=19
ab=4
a%d+b/c=0

此范例中使用了本文介绍的5种运算符,分别输出不同算术表达式的值。其中,“printf("a-b=%d\n",a-b);”,表示先输出“a-b=”,然后再输出 a-b 的值,所以最后输出“a-b=94”。其余按相同方法处理。

【示例2】算术运算符和表达式的应用。
#include <stdio.h>
int main()
{
    int x,a=3;
    float y;
    x=20+25/5*2;
    printf("(1)x=%d\n",x);
    x=25/2*2;
    printf("(2)x=%d\n",x);
    x=-a+4*5-6;
    printf("(3)x=%d\n",x);
    x=a+4%5-6;
    printf("(4)x=%d\n",x);
    x=-3*4%-6/5;
    printf("(5)x=%d\n",x);
    x=(7+6)%5/2;
    printf("(6)x=%d\n",x);
    y=25.0/2.0*2.0;
    printf("(7)y=%f\n",y);
}
运行结果:
(1)x=30
(2)x=24
(3)x=11
(4)x=1
(5)x=0
(6)x=1
(7)y=25.000000

此范例中使用了复杂的算术表达式,即同一个表达式中出现了多个运算符,因此计算结果应根据不同运算符的优先级与结合性进行运算。如 20+25/5*2,应先计算 25/5 的值,再乘以 2,最后与 20 相加,因为“/”与“*”运算符的优先级高于“+”运算符,而“/”与“*”优先级相同,自左向右进行计算,结果为 30。

优秀文章