> 文章列表 > 【C语言】基础语法2:运算符和表达式

【C语言】基础语法2:运算符和表达式

【C语言】基础语法2:运算符和表达式

上一篇:变量和数据类型
下一篇:控制流程结构

❤️‍🔥前情提要❤️‍🔥
  欢迎来到C语言基本语法教程
  在本专栏结束后会将所有内容整理成思维导图(结束换链接)并免费提供给大家学习,希望大家纠错指正。本专栏将以基础出发,在之后的教程中将会不断学习并详细讲解C语言的基本语法及其高级用法
  上一节讲了C语言基础中的变量和基础数据类型,接下来让我们来一起学习一下C语言中的运算符表达式
请添加图片描述

  🍪本教程内容干货满满,跟上步伐吧~🍪


作者介绍

🎓 作者:某不知名编程爱好者📜
🗒️系列文章&专栏推荐: 🔗《华为机试题解析》 、🔗《C语言程序设计》、🔗 《MySQL数据库》
🕸️为大家推荐一款很好用的C语言刷题网站🔗点击跳转


🔖导航小助手🔖

  • 🥬 开胃小菜
    • 📑 运算符
      • 🏷️ 算术运算符
      • 🏷️ 关系运算符
      • 🏷️ 逻辑运算符
      • 🏷️ 位运算符
      • 🏷️ 赋值运算符
      • 🏷️ 条件运算符
    • 📑 运算符优先级
    • 🎀小结

🥬 开胃小菜

  • C语言变量和数据类型与运算符之间有着密切的关系。变量是用来存储数据的容器,而数据类型则决定了变量可以存储的数据类型运算符则是对变量和数据类型进行操作的工具

  • 在C语言中,变量必须先定义后使用,定义变量时需要指定变量的数据类型。C语言中的基本数据类型包括整型浮点型字符型布尔型。不同的数据类型占用不同的内存空间,因此在定义变量时需要考虑数据类型对内存的影响。

运算符可以对变量进行数学运算逻辑运算位运算。运算符的操作数可以是变量、常量或表达式,运算符的结果也可以被赋值给一个变量。在运算符的操作过程中,需要注意数据类型的匹配类型转换的问题,否则可能会导致意外的结果或编译错误。

  • 例如,可以定义一个整型变量a和b,并使用加法运算符将它们相加,结果赋值给另一个整型变量c:
int a = 10;
int b = 20;
int c = a + b;

在这个例子中,a和b都是整型变量,加法运算符可以对它们进行数学运算,结果也是一个整型变量,可以被赋值给另一个整型变量c。

  • 又如,可以定义一个浮点型变量d,并使用除法运算符将c除以d,结果赋值给另一个浮点型变量e:
float d = 2.5;
float e = c / d;

在这个例子中,c是一个整型变量,d是一个浮点型变量,除法运算符可以对它们进行数学运算,结果也是一个浮点型变量,可以被赋值给另一个浮点型变量e。

综上所述,C语言变量和数据类型与运算符之间的衔接是非常紧密的。

如果对变量和数据类型不太熟悉可以翻看本专栏上一节内容点击跳转


📑 运算符

💡 概念

  • C语言运算符是用来进行数值计算逻辑判断的符号,它们可以对变量常量表达式进行操作。C语言中的运算符包括算术运算符关系运算符逻辑运算符位运算符赋值运算符
运算符类型 运算符 说明
逻辑非 ! 逻辑非运算符
乘除取余 *, /, % 乘法、除法和取余运算符
加减 +, - 加法和减法运算符
关系运算符 <, <=, >, >= 小于、小于等于、大于、大于等于运算符
关系运算符 ==, != 等于和不等于运算符
赋值运算符 =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= 赋值、加等于、减等于、乘等于、除等于、取余等于、按位与等于、按位或等于、按位异或等于、左移等于、右移等于运算符

点击查看完整表格


🏷️ 算术运算符

💡 概念

  • C语言中的算术运算符用于对数字进行基本的数学运算,包括取余自增自减运算符。

💡 规则

  • 加法运算符(+):用于将两个数相加,例如:
int a = 10;
int b = 20;
int c = a + b; // c的值为30
  • 减法运算符(-):用于将两个数相减,例如:
int a = 10;
int b = 20;
int c = b - a; // c的值为10
  • 乘法运算符(*):用于将两个数相乘,例如:
int a = 10;
int b = 20;
int c = a * b; // c的值为200
  • 除法运算符(/):用于将一个数除以另一个数,例如:
int a = 10;
int b = 20;
int c = b / a; // c的值为2

需要注意的是,如果除数为0会导致程序崩溃或出现异常情况,因此在进行除法运算时需要注意除数是否为0

  • 取余运算符(%):用于计算两个数相除的余数,例如:
int a = 10;
int b = 3;
int c = a % b; // c的值为1
  • 自增运算符(++):将变量的值加1,并返回修改后的值,例如:
int a = 10;
int b = ++a; // a的值为11,b的值为11
  • 自减运算符(–):将变量的值减1,并返回修改后的值,例如:
int a = 10;
int b = --a; // a的值为9,b的值为9

需要注意的是,自增和自减运算符既可以前缀形式使用,也可以后缀形式使用。前缀形式会先进行自增或自减运算,再将变量的值赋给另一个变量后缀形式则先将变量的值赋给另一个变量,再进行自增或自减运算

C语言中的算术运算符用于对数字进行基本的数学运算,可以实现加减乘除、取余和自增自减等操作。在使用算术运算符时,需要注意数据类型的匹配和类型转换的问题,否则可能会导致意外的结果或编译错误。


🏷️ 关系运算符

💡 概念

  • C语言中的关系运算符用于比较两个数值的大小关系,这些运算符可以用于任何数据类型,包括整数、浮点数、字符和指针等,返回一个布尔值(true或false),在C语言中,关系运算符有6个,分别是等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。它们通常用于控制程序的流程,例如if语句和while循环中。

💡 规则

  • 等于运算符(==)用于比较两个值是否相等。如果两个值相等,则返回1,否则返回0。例如,以下代码将比较变量x和y的值是否相等:
if (x == y) {printf("x等于y");
} else {printf("x不等于y");
}
  • 不等于运算符(!=)用于比较两个值是否不相等。如果两个值不相等,则返回1,否则返回0。例如,以下代码将比较变量x和y的值是否不相等:
if (x != y) {printf("x不等于y");
} else {printf("x等于y");
}
  • 大于运算符(>)用于比较两个值的大小关系。如果左边的值大于右边的值,则返回1,否则返回0。例如,以下代码将比较变量x和y的值大小关系:
if (x > y) {printf("x大于y");
} else {printf("x小于等于y");
}
  • 小于运算符(<)用于比较两个值的大小关系。如果左边的值小于右边的值,则返回1,否则返回0。例如,以下代码将比较变量x和y的值大小关系:
if (x < y) {printf("x小于y");
} else {printf("x大于等于y");
}
  • 大于等于运算符(>=)用于比较两个值的大小关系。如果左边的值大于或等于右边的值,则返回1,否则返回0。例如,以下代码将比较变量x和y的值大小关系:
if (x >= y) {printf("x大于等于y");
} else {printf("x小于y");
}
  • 小于等于运算符(<=)用于比较两个值的大小关系。如果左边的值小于或等于右边的值,则返回1,否则返回0。例如,以下代码将比较变量x和y的值大小关系:
if (x <= y) {printf("x小于等于y");
} else {printf("x大于y");
}

关系运算符是C语言中非常重要的运算符之一。使用这些运算符可以比较不同变量之间的大小关系,从而控制程序的流程。


🏷️ 逻辑运算符

💡 概念

  • C语言中的逻辑运算符是用于连接两个或多个关系表达式的运算符,以便形成更复杂的逻辑运算。这些运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。逻辑运算符通常用于控制程序的流程和实现复杂的条件语句。

💡 规则

  • 逻辑与运算符(&&)用于连接两个表达式,如果这两个表达式都为真,则返回真。否则,返回假。例如,以下代码将比较变量x和y的值是否同时大于0:
if (x > 0 && y > 0) {printf("x和y都大于0");
} else {printf("x和y不都大于0");
}
  • 逻辑或运算符(||)用于连接两个表达式,如果这两个表达式中至少有一个为真,则返回真。否则,返回假。例如,以下代码将比较变量x和y的值是否至少有一个大于0:
if (x > 0 || y > 0) {printf("x和y中至少有一个大于0");
} else {printf("x和y都小于等于0");
}
  • 逻辑非运算符(!)用于取反一个表达式的值。如果表达式为真,则返回假。如果表达式为假,则返回真。例如,以下代码将比较变量x和y的值是否不相等:
if (!(x == y)) {printf("x和y不相等");
} else {printf("x和y相等");
}
  • 逻辑运算符可以组合使用,以便构成更复杂的逻辑表达式。例如,以下代码将比较变量x、y和z的值是否同时大于0:
if (x > 0 && y > 0 && z > 0) {printf("x、y和z都大于0");
} else {printf("x、y和z中至少有一个小于等于0");
}

逻辑运算符是C语言中非常重要的运算符之一。使用这些运算符可以实现复杂的条件语句和控制程序的流程。

🏷️ 位运算符

💡 概念

  • C语言中的位运算符是用于对二进制位进行操作的运算符,这些运算符可以用于任何数据类型,包括整数、字符和指针等。在C语言中,位运算符有6个,分别是按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移位(<<)和右移位(>>)。

💡 规则

  • 按位与运算符(&)用于对两个数的二进制位进行按位与操作。如果两个二进制位都为1,则结果为1,否则为0。例如,以下代码将比较变量x和y的二进制位:
int result = x & y;
printf("x和y的按位与结果为:%d", result);
  • 按位或运算符(|)用于对两个数的二进制位进行按位或操作。如果两个二进制位中至少有一个为1,则结果为1,否则为0。例如,以下代码将比较变量x和y的二进制位:
int result = x | y;
printf("x和y的按位或结果为:%d", result);
  • 按位异或运算符(^)用于对两个数的二进制位进行按位异或操作。如果两个二进制位相同,则结果为0,否则为1。例如,以下代码将比较变量x和y的二进制位:
int result = x ^ y;
printf("x和y的按位异或结果为:%d", result);
  • 按位取反运算符(~)用于对一个数的二进制位进行按位取反操作。例如,以下代码将比较变量x的二进制位:
int result = ~x;
printf("x的按位取反结果为:%d", result);
  • 左移位运算符(<<)用于将一个数的二进制位向左移动指定的位数。例如,以下代码将变量x的二进制位向左移动两位:
int result = x << 2;
printf("x向左移动两位的结果为:%d", result);
  • 右移位运算符(>>)用于将一个数的二进制位向右移动指定的位数。例如,以下代码将变量x的二进制位向右移动两位:
int result = x >> 2;
printf("x向右移动两位的结果为:%d", result);

位运算符是C语言中非常重要的运算符之一。使用这些运算符可以对二进制位进行操作,从而实现一些高级的操作,例如位图处理数据压缩加密解密等。


🏷️ 赋值运算符

💡 概念

  • C语言中的赋值运算符是用于给变量赋值的运算符,这些运算符可以用于任何数据类型,包括整数、浮点数、字符和指针等。在C语言中,赋值运算符有6个,分别是等于(=)、加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)和取模等于(%=)。

💡 规则

  • 等于运算符(=)用于给变量赋值。例如,以下代码将给变量x赋值为10:
x = 10;
  • 加等于运算符(+=)用于将变量的值加上指定的值,并将结果赋给变量本身。例如,以下代码将变量x的值加上5:
x += 5;
  • 减等于运算符(-=)用于将变量的值减去指定的值,并将结果赋给变量本身。例如,以下代码将变量x的值减去5:
x -= 5;
  • 乘等于运算符(*=)用于将变量的值乘以指定的值,并将结果赋给变量本身。例如,以下代码将变量x的值乘以5:
x *= 5;
  • 除等于运算符(/=)用于将变量的值除以指定的值,并将结果赋给变量本身。例如,以下代码将变量x的值除以5:
x /= 5;
  • 取模等于运算符(%=)用于将变量的值除以指定的值,然后将余数赋给变量本身。例如,以下代码将变量x的值除以5,然后将余数赋给变量x:
x %= 5;

赋值运算符是C语言中非常重要的运算符之一。使用这些运算符可以方便地给变量赋值,并进行一些常见的算术操作。


🏷️ 条件运算符

💡 概念

  • C语言中的条件运算符是一种特殊的运算符,也称为三目运算符(ternary operator)。它由三个操作数组成,通常用于简化if-else语句的写法。

💡 规则

表达式1 ? 表达式2 : 表达式3
  • 其中,表达式1为条件表达式,如果表达式1的值为真,则整个条件运算符的值为表达式2的值,否则为表达式3的值。下面是一个简单的例子:
#include <stdio.h>int main() {int x = 10, y = 20, max;max = (x > y) ? x : y;printf("The max value is %d\\n", max);return 0;
}

在这个例子中,我们声明了两个整型变量x和y,然后用条件运算符来比较它们的值,将较大的值赋给变量max,并输出结果。在这个例子中,条件表达式x > y的值为假,所以整个条件运算符的值为表达式y的值20,因此变量max的值也为20。

  • 条件运算符可以嵌套使用,使得代码更加简洁。例如,我们可以用条件运算符来实现一个判断奇偶性的函数:
#include <stdio.h>void checkOddEven(int num) {(num % 2 == 0) ? printf("%d is even\\n", num) : printf("%d is odd\\n", num);
}int main() {checkOddEven(10);checkOddEven(7);return 0;
}

在这个例子中,我们定义了一个函数checkOddEven,用条件运算符来判断一个整数是否为偶数。如果该整数可以被2整除,则它为偶数,否则为奇数。通过调用checkOddEven函数,我们可以输出10为偶数,7为奇数的结果。

条件运算符是C语言中一种非常方便的运算符,可以用来简化if-else语句的写法,使代码更加简洁和易读。熟练掌握条件运算符的使用可以提高程序的编写效率和质量。


📑 运算符优先级

💡 概念

  • 在C语言中,运算符优先级指的是在表达式中,不同运算符之间的优先级关系。在表达式中,如果有多个运算符,那么C语言会按照一定的优先级顺序进行计算,以确定表达式的最终结果。如果不了解运算符的优先级,就可能会出现意想不到的结果。

  • 以下是一个简单的例子,演示了运算符优先级的影响:

#include <stdio.h>int main() {int a = 5, b = 10, c = 15, d = 20;int result = a + b * c / d;printf("结果为 %d\\n", result);return 0;
}

在这个例子中,我们定义了四个整型变量a、b、c、d,并将它们的值分别赋为5、10、15、20。然后,我们将它们作为表达式中的操作数,用加法、乘法和除法运算符进行计算。根据运算符优先级的规则,乘法和除法的优先级高于加法,所以b * c / d会先计算,得到一个整型结果7,然后再将a加上这个结果,最终的结果为12。

C语言中的运算符优先级由高到低如下:

优先级 运算符 描述
1 () 括号
2 ! ~ ++ – + - * & sizeof 一元运算符
3 * / % 乘、除、取模
4 + - 加、减
5 << >> 移位运算符
6 < <= > >= 关系运算符
7 == != 相等性运算符
8 & 按位与
9 ^ 按位异或
10 | 按位或
11 && 逻辑与
12 || 逻辑或
13 ?: 三目运算符
14 = += -= *= /= %= <<= >>= &= ^= |= 赋值运算符
15 , 逗号运算符

C语言中的运算符优先级是非常重要的,能够直接影响表达式的计算结果。熟练掌握运算符优先级可以使程序更加简洁和易读,同时也能够提高程序的效率和质量。


上一篇:变量和数据类型
下一篇:控制流程结构


🎀小结

⚡恭喜你的内功又双叒叕得到了提高!!!🔋

🔚以上就是C语言运算符和表达式的全部知识了~

🤗感谢大家的阅读~

📬后续还会继续更新💓,欢迎持续关注哟~📌

💫如果有错误❌,欢迎指正呀💫

✨如果觉得收获满满,可以点点赞👍支持一下哟~✨


在这里插入图片描述