C语言4 运算符

简介: C语言4 运算符

1. 算术运算符

`+` (加法):将两个数相加。

`-` (减法):将第一个数减去第二个数。

`*` (乘法):将两个数相乘。

`/` (除法):将第一个数除以第二个数,注意在整型除法中结果也是整型(小数部分被舍弃)。

`%` (取模):返回两个数相除的余数,只能用于整数。

示例

int a = 10, b = 3;
int sum = a + b;      // sum = 13
int difference = a - b; // difference = 7
int product = a * b;    // product = 30
int quotient = a / b;   // quotient = 3
int remainder = a % b;  // remainder = 1


2. 关系运算符

`==` (等于):比较两个值是否相等。

`!=` (不等于):比较两个值是否不相等。

`>` (大于):检查第一个值是否大于第二个值。

`<` (小于):检查第一个值是否小于第二个值。

`>=` (大于等于):检查第一个值是否大于或等于第二个值。

`<=` (小于等于):检查第一个值是否小于或等于第二个值。

示例

int a = 10, b = 20;
int result;
 
result = (a == b);    // result = 0 (false)
result = (a != b);    // result = 1 (true)
result = (a > b);     // result = 0 (false)
result = (a < b);     // result = 1 (true)
result = (a >= b);    // result = 0 (false)
result = (a <= b);    // result = 1 (true)


3. 逻辑运算符

`&&` (逻辑与):如果两个操作数都为真,则条件为真。

`||` (逻辑或):如果两个操作数有一个为真,则条件为真。

`!` (逻辑非):反转操作数的逻辑状态。


示例

int a = 1, b = 0;
int result;
 
result = (a && b);    // result = 0 (false)
result = (a || b);    // result = 1 (true)
result = !a;          // result = 0 (false)


4. 位运算符

`&` (按位与):对两个数的每一位执行与操作。

`|` (按位或):对两个数的每一位执行或操作。

`^` (按位异或):对两个数的每一位执行异或操作。

`~` (按位取反):对数的每一位执行取反操作。

`<<` (左移):将一个数的所有位向左移动指定的位数。

`>>` (右移):将一个数的所有位向右移动指定的位数。

示例

int a = 5, b = 3;
int result;
 
result = a & b;   // result = 1 (0101 & 0011 = 0001)
result = a | b;   // result = 7 (0101 | 0011 = 0111)
result = a ^ b;   // result = 6 (0101 ^ 0011 = 0110)
result = ~a;      // result = -6 (~00000101 = 11111010)
result = a << 1;  // result = 10 (0101 << 1 = 1010)
result = a >> 1;  // result = 2 (0101 >> 1 = 0010)



5. 赋值运算符

`=` (赋值):将右边的值赋给左边的变量。

`+=` (加且赋值):将右边的值与左边的变量相加并赋值给左边的变量。

`-=` (减且赋值):将右边的值与左边的变量相减并赋值给左边的变量。

`*=` (乘且赋值):将右边的值与左边的变量相乘并赋值给左边的变量。

`/=` (除且赋值):将右边的值与左边的变量相除并赋值给左边的变量。

`%=` (取模且赋值):将右边的值与左边的变量取模并赋值给左边的变量。

示例

int a = 10;
a += 5;  // a = 15
a -= 3;  // a = 12
a *= 2;  // a = 24
a /= 4;  // a = 6
a %= 4;  // a = 2


6. 自增和自减运算符

`++` (自增):将操作数的值增加1。例如 `a++` 或 `++a`。

`--` (自减):将操作数的值减少1。例如 `a--` 或 `--a`。

示例

int a = 5;
a++;  // a 现在是 6
++a;  // a 现在是 7
a--;  // a 现在是 6
--a;  // a 现在是 5


7. 条件运算符(三元运算符)

`?:` (条件运算符):根据条件表达式的真假值来选择执行两个表达式之一。

示例

int a = 10, b = 20;
int result;
 
result = (a > b) ? a : b;  // result = 20


8. 逗号运算符

`,` (逗号运算符):按顺序执行一系列操作,并返回最后一个操作的值。

示例

int a = 1, b = 2, c;
c = (a += 1, b += 2, a + b);  // c = 6 (a=2, b=4)


9. sizeof 运算符

`sizeof`:返回变量或数据类型的大小(以字节为单位)。

示例

int a = 10;
printf("Size of a: %lu\n", sizeof(a));       // 输出变量 a 的大小
printf("Size of int: %lu\n", sizeof(int));   // 输出数据类型 int 的大小


10. 取地址和解引用运算符

`&` (取地址):返回变量的地址。

`*` (解引用):访问指针所指向的地址的值。

示例

int a = 10;
int *p;
p = &a;     // p 现在是变量 a 的地址
int b = *p; // b 现在是变量 a 的值,即 10


11.运算符的优先级

在C语言中,运算符的优先级决定了表达式中各个运算符操作的顺序。下面是常见运算符按优先级从高到低排列的列表:


1. 逗号运算符

2. 赋值运算符 (`=`, `+=`, `-=` 等)

3. 条件运算符 (`?:`)

4. 逻辑或运算符 (`||`)

5. 逻辑与运算符 (`&&`)

6. 按位或运算符 (`|`)

7. 按位异或运算符 (`^`)

8. 按位与运算符 (`&`)

9. 相等性和关系运算符 (`==`, `!=`, `<`, `>`, `<=`, `>=`)

10. 移位运算符 (`<<`, `>>`)

11. 加法和减法运算符 (`+`, `-`)

12. 乘法、除法和取模运算符 (`*`, `/`, `%`)

13. 一元运算符 (如 `++`, `--`, `!`, `~`, `+`, `-`)

14. 解引用和取地址运算符 (`*`, `&`)

15. sizeof运算符


优先级较高的运算符会先于优先级较低的运算符进行计算。在表达式中,可以使用圆括号 `()` 来改变运算符的计算顺序,圆括号中的表达式会先于外部的运算符进行计算。

例如,考虑以下表达式:

int a = 10, b = 5, c = 3;
int result = a + b * c;


根据运算符的优先级,乘法运算符 `*` 比加法运算符 `+` 的优先级高,因此先计算乘法,然后再进行加法运算。如果想先计算加法,可以使用圆括号来改变优先级:

int result = (a + b) * c;


这样就会先计算加法,然后再乘以 `c`。理解和正确利用运算符的优先级是编写正确和高效C语言程序的重要基础之一。

目录
相关文章
|
3月前
|
Java 编译器 C语言
【JavaSE】运算符详解及与C语言中的区别
【JavaSE】运算符详解及与C语言中的区别
80 0
|
7天前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
6天前
|
C语言
C语言------运算符与表达式
这篇文章是C语言运算符与表达式的实训教程,通过多个示例程序展示了如何使用算术运算符、关系运算符、逻辑运算符以及条件语句来解决实际问题,并介绍了如何通过函数库简化复杂数学运算。
C语言------运算符与表达式
|
3月前
|
C语言
C语言中的条件运算符和条件表达式详解
C语言中的条件运算符和条件表达式详解
66 0
|
2月前
|
C语言
C语言中的运算符及算术运算符详解
C语言中的运算符及算术运算符详解
25 0
|
2月前
|
存储 Linux 编译器
c语言的数据类型与运算符
c语言基础学习数据类型与运算符
|
2月前
|
C语言
C语言算数运算符和算数表达式详解
C语言算数运算符和算数表达式详解
32 0
|
3月前
|
C语言
C语言中的运算符和表达式
C语言中的运算符和表达式
29 0
|
3月前
|
存储 算法 C语言
深入理解C语言中的间接寻址运算符docx
深入理解C语言中的间接寻址运算符docx
43 0
|
3月前
|
编译器 数据处理 C语言
C语言运算符的深入探究
C语言运算符的深入探究
27 0