加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 算术运算符
    • 关系运算符
    • 逻辑运算符
    • 位运算
    • 赋值运算
    • 杂项运算
    • 运算符优先级
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

C语言速查手册:运算符(Operators)

04/30 08:13
711
阅读需 7 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

运算符是执行特定操作的符号,它主要用于表达式的构成。在C语言中运算符有很多种操作符,主要包括以下几种运算符:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 杂项运算符

算术运算符

算术运算符主要是一些算术运算,例如加减乘除等。详细的运算规则如下表:

示例:

#include <stdio.h>

int main()
{
int a = 1, b1 = 2;
float b2 = 2.0;

printf("a + b1 = %dn", a + b1);
printf("a - b1 = %dn", a - b1);
printf("a * b1 = %dn", a * b1);
printf("a / b1 = %dn", a / b1);
printf("a / b2 = %fn", a / b2);
printf("a %% b1 = %dn", a % b1);
printf("a++ = %d ; a = %dn", a++, a);
printf("++a = %d ; a = %dn", ++a, a);
printf("a-- = %d ; a = %dn", a--, a);
printf("--a = %d ; a = %dn", --a, a);

return 0;
}

输出结果:

上述运算中有几点需要特别的注意。除法运算中如果两个操作数都是整数那么得到的结果也必然是整数而不是小数,如果两个操作数其中有一个数是小数那么其结果也是小数;对于整除运算结果也是整数。对于自增或自减运算,运算符在操作数之前和之后对于表达是本身来说有着一定的区别,但对于操作数自身是一样的;如果操作数在运算符的左边,则表达式的值就是操作数未运算之前的值,反之,就是运算之后的值。

关系运算符

关系运算符主要是操作数大小的判断运算,例如两个操作数是否相等。详细的运算规则如下表:

示例:

#include <stdio.h>
int main()
{
int a1 = 1, b1 = 2;
int a2 = 1;

printf("a1 == a2 : %dn", a1 == a2);
printf("a1 == b1 : %dn", a1 == b1);
printf("a1 != b1 : %dn", a1 != b1);
printf("a1 > b1 : %dn", a1 > b1);
printf("a1 >= a2 : %dn", a1 >= a2);
printf("a1 < b1 : %dn", a1 < b1);
printf("a1 <= b1 : %dn", a1 <= b1);

return 0;
}

输出结果:

上面的的输出结果中,1为真,0为假。

逻辑运算符

逻辑运算也叫布尔运算,主要是测试真假值。详细的运算规则如下表:

示例:

#include <stdio.h>
int main()
{
int a0 = 0, b0 = 0;
int a1 = 1, b1 = 1;

printf("a0 && b0 : %dn", a0 && b0);
printf("a0 && a1 : %dn", a0 && a1);
printf("a1 && b1 : %dn", a1 && b1);
printf("a0 || b1 : %dn", a0 || b1);
printf("!a0 : %dn", !a0);
printf("!a1 : %dn", !a1);
}

输出结果:

位运算

位运算是直接对操作数存储在内存中的二进制进行按位操作。所以其速度也会比一般的运算速度会快。详细的运算规则如下表:

示例:

#include <stdio.h>

int main()
{
int a = 5, b = 3;
printf("a & b = %dn", a & b);
printf("a | b = %dn", a | b);

return 0;
}

输出结果:

赋值运算

最简单的赋值运算符就是”=“,它的优先级很低,后面会介绍。详细的运算规则如下表:

示例:

#include <stdio.h>

int main()
{

int a = 1, b = 2, c = 3;
a += 1;
b -= 1;
c %= 2;

printf("a = %dn", a);
printf("b = %dn", b);
printf("c = %dn", c);

a <<= 2;
printf("a = %dn", a);
a >>= 1;
printf("a = %dn", a);
b >>= 1;
printf("b = %dn", b);

return 0;
}

输出结果:

杂项运算

除了上面几种运算符外,还有几种比较常用的运算符。详细的运算规则如下表:

sizeof()在数据类型章节已经介绍过,& 和 *在指针的篇幅会做详细的介绍,这里不过多说明。我们来看一个三目运算(?:)的例子,下面示例中如果“?”符号前a>b的条件成立,则取“:”符号前a的值,否则,取后面c的值。

示例:

#include <stdio.h>

int main()
{

int a = 1, b = 2, c = 3;
printf("a > b ? a : c= %dn", a > b ? a : c);

return 0;
}

输出结果:

运算符优先级

多个运算符在表达中出现时有着一定的运算顺序,不同运算符有优先级的高低,下表列出了不同运算符的优先级顺序,从上到下优先级从高到低。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
ABM8-32.000MHZ-10-B1U-T 1 Abracon Corporation CRYSTAL 32.0000MHZ 10PF SMD
$1.19 查看
ECS-.327-12.5-38-TR 1 ECS International Inc Parallel - Fundamental Quartz Crystal, 0.032768MHz Nom, ROHS COMPLIANT, MINIATURE, PLASTIC, SMD, 4 PIN

ECAD模型

下载ECAD模型
$0.85 查看
ISO1042BQDWVRQ1 1 Texas Instruments Automotive, isolated CAN transceiver with 70-V bus fault protection &amp; flexible data rate 8-SOIC -40 to 125

ECAD模型

下载ECAD模型
$39.02 查看

相关推荐

电子产业图谱