C 语言运算符

运算符是作用于值或变量的符号。例如:+ 是用于执行加法的运算符。

C 语言提供了广泛的运算符来执行各种操作。


C 语言算术运算符

算术运算符对数值(常量和变量)执行数学运算,如加法、减法、乘法、除法等。

运算符 运算符含义
+ 加法或一元加
- 减法或一元减
* 乘法
/ 除法
% 除法后的余数(模运算)

示例 1:算术运算符

// Working of arithmetic operators
#include <stdio.h>
int main()
{
    int a = 9,b = 4, c;
    
    c = a+b;
    printf("a+b = %d \n",c);
    c = a-b;
    printf("a-b = %d \n",c);
    c = a*b;
    printf("a*b = %d \n",c);
    c = a/b;
    printf("a/b = %d \n",c);
    c = a%b;
    printf("Remainder when a divided by b = %d \n",c);
    
    return 0;
}

输出

a+b = 13
a-b = 5
a*b = 36
a/b = 2
Remainder when a divided by b=1

如您所料,运算符+-*分别计算加法、减法和乘法。

在正常计算中,9/4 = 2.25。然而,程序中的输出是2

这是因为变量ab都是整数。因此,输出也是整数。编译器会忽略小数点后的部分,显示答案2而不是2.25

模运算符%计算余数。当a=9除以b=4时,余数为1%运算符只能与整数一起使用。

假设a = 5.0b = 2.0c = 5d = 2。那么在 C 语言编程中,

// Either one of the operands is a floating-point number
a/b = 2.5  
a/d = 2.5  
c/b = 2.5  

// Both operands are integers
c/d = 2

C 语言的自增和自减运算符

C 语言编程有两个运算符:自增++和自减--,用于将操作数(常量或变量)的值改变 1。

自增++将值加 1,而自减--将值减 1。这两个运算符是一元运算符,意味着它们只作用于单个操作数。

示例 2:自增和自减运算符

// Working of increment and decrement operators
#include <stdio.h>
int main()
{
    int a = 10, b = 100;
    float c = 10.5, d = 100.5;

    printf("++a = %d \n", ++a);
    printf("--b = %d \n", --b);
    printf("++c = %f \n", ++c);
    printf("--d = %f \n", --d);

    return 0;
}

输出

++a = 11
--b = 99
++c = 11.500000
--d = 99.500000

在这里,运算符++--用作前缀。这两个运算符也可以用作后缀,例如a++a--。访问此页面以了解有关自增和自减运算符用作后缀时的工作方式的更多信息。


C 语言的赋值运算符

赋值运算符用于将值赋给变量。最常见的赋值运算符是=

运算符 示例 同等于
= a = b a = b
+= a += b a = a+b
-= a -= b a = a-b
*= a *= b a = a*b
/= a /= b a = a/b
%= a %= b a = a%b

示例 3:赋值运算符

// Working of assignment operators
#include <stdio.h>
int main()
{
    int a = 5, c;

    c = a;      // c is 5
    printf("c = %d\n", c);
    c += a;     // c is 10 
    printf("c = %d\n", c);
    c -= a;     // c is 5
    printf("c = %d\n", c);
    c *= a;     // c is 25
    printf("c = %d\n", c);
    c /= a;     // c is 5
    printf("c = %d\n", c);
    c %= a;     // c = 0
    printf("c = %d\n", c);

    return 0;
}

输出

c = 5 
c = 10 
c = 5 
c = 25 
c = 5 
c = 0

C 语言的关系运算符

关系运算符检查两个操作数之间的关系。如果关系为真,则返回 1;如果关系为假,则返回值 0。

关系运算符用于决策循环

运算符 运算符含义 示例
== 等于 5 == 3的计算结果为 0
> 大于 5 > 3的计算结果为 1
< 小于 5 < 3的计算结果为 0
!= 不等于 5 != 3的计算结果为 1
>= 大于或等于 5 >= 3的计算结果为 1
<= 小于或等于 5 <= 3的计算结果为 0

示例 4:关系运算符

// Working of relational operators
#include <stdio.h>
int main()
{
    int a = 5, b = 5, c = 10;

    printf("%d == %d is %d \n", a, b, a == b);
    printf("%d == %d is %d \n", a, c, a == c);
    printf("%d > %d is %d \n", a, b, a > b);
    printf("%d > %d is %d \n", a, c, a > c);
    printf("%d < %d is %d \n", a, b, a < b);
    printf("%d < %d is %d \n", a, c, a < c);
    printf("%d != %d is %d \n", a, b, a != b);
    printf("%d != %d is %d \n", a, c, a != c);
    printf("%d >= %d is %d \n", a, b, a >= b);
    printf("%d >= %d is %d \n", a, c, a >= c);
    printf("%d <= %d is %d \n", a, b, a <= b);
    printf("%d <= %d is %d \n", a, c, a <= c);

    return 0;
}

输出

5 == 5 is 1
5 == 10 is 0
5 > 5 is 0
5 > 10 is 0
5 < 5 is 0
5 < 10 is 1
5 != 5 is 0
5 != 10 is 1
5 >= 5 is 1
5 >= 10 is 0
5 <= 5 is 1
5 <= 10 is 1 

C 语言的逻辑运算符

包含逻辑运算符的表达式根据表达式结果是真还是假,返回 0 或 1。逻辑运算符通常用于 C 语言编程中的决策

运算符 含义 示例
&& 逻辑与。仅当所有操作数都为真时才为真 如果 c = 5 且 d = 2,则表达式((c==5) && (d>5))等于 0。
|| 逻辑或。仅当任一操作数为真时才为真 如果 c = 5 且 d = 2,则表达式((c==5) || (d>5))等于 1。
! 逻辑非。仅当操作数为 0 时才为真 如果 c = 5,则表达式!(c==5)等于 0。

示例 5:逻辑运算符

// Working of logical operators

#include <stdio.h>
int main()
{
    int a = 5, b = 5, c = 10, result;

    result = (a == b) && (c > b);
    printf("(a == b) && (c > b) is %d \n", result);

    result = (a == b) && (c < b);
    printf("(a == b) && (c < b) is %d \n", result);

    result = (a == b) || (c < b);
    printf("(a == b) || (c < b) is %d \n", result);

    result = (a != b) || (c < b);
    printf("(a != b) || (c < b) is %d \n", result);

    result = !(a != b);
    printf("!(a != b) is %d \n", result);

    result = !(a == b);
    printf("!(a == b) is %d \n", result);

    return 0;
}

输出

(a == b) && (c > b) is 1 
(a == b) && (c < b) is 0 
(a == b) || (c < b) is 1 
(a != b) || (c < b) is 0 
!(a != b) is 1 
!(a == b) is 0 

逻辑运算符程序解释

  • (a == b) && (c > 5)计算结果为 1,因为操作数(a == b)(c > b)都为 1(真)。
  • (a == b) && (c < b)计算结果为 0,因为操作数(c < b)为 0(假)。
  • (a == b) || (c < b)计算结果为 1,因为(a = b)为 1(真)。
  • (a != b) || (c < b)计算结果为 0,因为操作数(a != b)(c < b)都为 0(假)。
  • !(a != b)计算结果为 1,因为操作数(a != b)为 0(假)。因此,!(a != b)为 1(真)。
  • !(a == b)计算结果为 0,因为(a == b)为 1(真)。因此,!(a == b)为 0(假)。

C 位运算符

在计算过程中,像加法、减法、乘法、除法等数学运算会被转换为位级运算,从而提高处理速度并节省功耗。

按位运算符用于 C 语言编程,以执行位级操作。

运算符 运算符含义
& 按位与
| 按位或
^ 按位异或
~ 按位补码
<< 左移
>> 右移

访问 C 语言中的按位运算符以了解更多信息。

其他运算符


逗号运算符

逗号运算符用于将相关表达式链接在一起。例如

int a, c = 5, d;

sizeof 运算符

sizeof是一个一元运算符,它返回数据(常量、变量、数组、结构等)的大小。

示例 6:sizeof 运算符

#include <stdio.h>
int main()
{
    int a;
    float b;
    double c;
    char d;
    printf("Size of int=%lu bytes\n",sizeof(a));
    printf("Size of float=%lu bytes\n",sizeof(b));
    printf("Size of double=%lu bytes\n",sizeof(c));
    printf("Size of char=%lu byte\n",sizeof(d));

    return 0;
}

输出

Size of int = 4 bytes
Size of float = 4 bytes
Size of double = 8 bytes
Size of char = 1 byte

其他运算符,如三元运算符?:、引用运算符&、解引用运算符*和成员选择运算符 -> 将在后面的教程中讨论。

在我们结束之前,让我们测试一下你对 C 语言运算符的知识!你能解决下面的挑战吗?

挑战

编写一个函数来找出两个数字中较小的一个。

  • 返回两个数字ab中较小的一个。
  • 例如,如果a = 3b = 7,则预期输出为 **3**。

视频:C 语言中的算术运算符

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战