亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C 语言运算符完全指南:算术、关系、逻辑、位运算等

C 语言运算符完全指南

本教程通过示例全面讲解 C 语言算术、自增自减、赋值、关系、逻辑、位运算及其他运算符的用法与优先级。

视频: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,因两操作数均为 int,编译器截断小数部分。

% 仅用于整数。若 a=5.0、b=2.0、c=5、d=2,则:

// 任一操作数为浮点数
a/b = 2.5
a/d = 2.5
c/b = 2.5
// 两操作数均为整数
c/d = 2

C 自增与自减运算符

++ 增加 1,-- 减少 1,均为一元运算符。

示例 2:自增自减运算符

// 自增自减演示
#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 = ba = b
+=a += ba = a+b
-=a -= ba = a-b
*=a *= ba = a*b
/=a /= ba = a/b
%=a %= ba = a%b

示例 3:赋值运算符

// 赋值运算符演示
#include <stdio.h>
int main() {
    int a = 5, c;
    c = a; printf("c = %d\n", c);   // 5
    c += a; printf("c = %d\n", c);  // 10
    c -= a; printf("c = %d\n", c);  // 5
    c *= a; printf("c = %d\n", c);  // 25
    c /= a; printf("c = %d\n", c);  // 5
    c %= a; printf("c = %d\n", c);  // 0
    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:关系运算符

// 关系运算符演示
#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=5,d=2 时 ((c==5) && (d>5)) 为 0
||逻辑或。一真即真c=5,d=2 时 ((c==5) || (d>5)) 为 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

逻辑运算符程序解析


C 位运算符

计算时数学运算转为位级操作,更快更省电。位运算符用于位级操作。

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

详见 C 语言位运算符详解。


其他运算符

逗号运算符

关联相关表达式:

int a, c = 5, d;

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语言

  1. 微处理器编程基础
  2. C#运算符——C#运算符全面指南
  3. 掌握 C# 位运算与移位运算符:全面指南
  4. 掌握 C# 命名空间:代码组织、作用域与最佳实践
  5. 掌握 C++ 运算符:六大类型全解析与实战示例
  6. C++数组传递给函数实战指南
  7. C 语言用户自定义函数四大模式对比:参数与返回值的设计权衡
  8. C 语言编程入门:全面教程指南
  9. Verilog 运算符:综合必备的算术与控制运算符
  10. 精通Python运算符:全面指南
  11. 精通 Java 运算符:类型、语法与实战示例
  12. Java 核心运算符全面指南