C 语言运算符

本文介绍了 C 语言编程中的不同运算符。

运算符是对值或变量进行操作的符号,例如:+ 是执行加法的运算符。

C 语言中内置了大量的运算符来执行各种操作。

算术运算符

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

运算符 运算符的含义
+ 加法或表示整数
- 减法或表示负数
* 乘法
/ 分配
% 除法后的余数(模除法)

示例 1:算术运算符

#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

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

假设 a = 5.0b = 2.0c = 5d = 2 。然后在 C 语言编程中的计算结果如下:

// 两个操作数是浮点数
a/b = 2.5
a/d = 2.5
c/b = 2.5

// 两个操作数都是整数
c/d = 2

自增和自减运算符

C 语言编程有两个运算符递增 ++ 和递减 --

递增 ++ 将变量的值增加 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-- 这样用作后缀。

赋值运算符

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

运算符 例子 结果
= 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:赋值运算符

#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

关系运算符

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

关系运算符常用于 if else 语句循环

运算符 运算符的含义 例子
== 等于 5 == 3 被评估为 0
> 比…更棒 5 > 3 被评估为 1
< 少于 5 < 3 被评估为 0
!= 不等于 5 != 3 被评估为 1
>= 大于或等于 5 >= 3 被评估为 1
<= 小于或等于 5 <= 3 被评估为 0

示例 4:关系运算符

#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 逻辑运算符

包含逻辑运算符的表达式返回 01,具体取决于表达式的结果是真还是假。

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

示例 5:逻辑运算符

#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) 都是 ·(假)。
  • !(a != b) 计算结果为 1,因为 (a != b)0 (假)。因此,!(a != b)1(真)。
  • !(a == b) 计算结果为 0,因为 (a == b)1(真)。因此,!(a == b)0(假)。

按位运算符

在计算过程中,诸如加、减、乘、除等数学运算被转换为位运算,这使得处理速度更快,效率更高。

位运算符在 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

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