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

news2025/1/17 23:06:47

❤️‍🔥前情提要❤️‍🔥
  欢迎来到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语言中的运算符包括算术运算符关系运算符逻辑运算符位运算符赋值运算符
运算符类型运算符说明
逻辑非!逻辑非运算符
乘除取余*, /, %乘法、除法和取余运算符
加减+, -加法和减法运算符
关系运算符<, <=, >, >=小于、小于等于、大于、大于等于运算符
关系运算符==, !=等于和不等于运算符
赋值运算符=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=赋值、加等于、减等于、乘等于、除等于、取余等于、按位与等于、按位或等于、按位异或等于、左移等于、右移等于运算符

点击查看完整表格


🏷️ 算术运算符

💡 概念

  • 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语言运算符和表达式的全部知识了~

🤗感谢大家的阅读~

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

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

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


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【历史上的今天】4 月 19 日:摩尔定律被提出;微软发布 Pocket PC;第一个 FORTRAN 程序开始运行

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 4 月 19 日&#xff0c;在 1918 年的今天&#xff0c;克利福德贝里&#xff08;Clifford Berry&#xff09;出生。他是世界上第一台电子数字计算设备 Atanasof…

springboot中记录链路日志traceId

一 相关概念 在分布式服务架构下&#xff0c;一个 Web 请求从网关流入&#xff0c;有可能会调用多个服务对请求进行处理&#xff0c;拿到最终结果。在这个过程中每个服务之间的通信又是单独的网络请求&#xff0c;无论请求流经的哪个服务除了故障或者处理过慢都会对前端造成影…

基于PCA和NSST算法联合实现红外与可见光图像融合的Matlab仿真(完整源码+35组数据集)

以下是一个使用PCA和NSST算法实现红外与可见光图像融合的Matlab仿真完整源码。源码中只需修改红外图像&#xff08;IR.bmp&#xff09;和可见光图像&#xff08;VI.bmp&#xff09;名字即可 文章目录 效果展示数据集展示步骤说明完整源码下载地址 效果展示 最终融合效果展示&am…

cifar-10数据集+ResNet50

CIFAR-10-ObjectRecognition 作为一个古老年代的数据集&#xff0c;用ResNet来练一下手也是不错的。 比赛链接&#xff1a;CIFAR-10 - Object Recognition in Images | Kaggle 1. 预设置处理 创建各类超参数&#xff0c;其中如果是在Kaggle上训练的话batch_size是可以达到40…

安全狗深度参与编写《数据安全产品与服务观察报告》发布!

4月11日&#xff0c;由中国通信标准化协会联合数据安全推进计划主办的《数据安全产品与服务观察报告》发布会在北京顺利开展。 作为国内云原生安全领导厂商&#xff0c;安全狗也参与了数据安全推进计划《数据安全产品与服务观察报告》撰写。 此次活动针对数据安全产业、技术、…

排序算法合集(1)

前言&#xff1a; 今天我们正式开始讲述算法中的排序。排序算法是我们十分重要的算法&#xff0c;为什么呢&#xff1f; 排序是在各种情况下都非常重要的&#xff0c;无论是在人类社会还是在计算机科学中。以下是一些排序的重要性&#xff1a; 数据分析&#xff1a;在数据分析…

多连接数据库管理Navicat Premium 中文

Navicat Premium 是一款强大的数据库管理工具&#xff0c;它支持多种关系型数据库&#xff0c;包括 MySQL、MariaDB、Oracle、SQL Server、PostgreSQL 等等。 以下是 Navicat Premium 的一些主要功能&#xff1a; 连接管理&#xff1a;可以在一个用户界面中同时连接到多个数据库…

HCIP-6.7BGP的路径选择

BGP的路径选择 1、BGP路径属性1.1、路由选择1.1.1、BGP路由选择过程1.1.2、BGP选路参数2、BGP的路由策略2.1、Preferred-Value相当权重weight2.2、local-preference本地优先级2.3、AS_PATH经过的AS号 不常用2.4、Origin起源属性修改2.5、MED多出口鉴别器3、BGP非策略性选路原则…

【C++】右值引用(极详细版)

在讲右值引用之前&#xff0c;我们要了解什么是右值&#xff1f;那提到右值&#xff0c;就会想到左值&#xff0c;那左值又是什么呢&#xff1f; 我们接下来一起学习&#xff01; 目录 1.左值引用和右值引用 1.左值和右值的概念 2.左值引用和右值引用的概念 2.左值引用和右…

C++linux高并发服务器项目实践 day2

Clinux高并发服务器项目实践 day2 静态库的制作静态库命名规则静态库的制作 动态库的制作命名规则制作使用动态库与静态库的区别解决动态库连接失败问题静态库和动态库的对比静态库的优缺点动态库的优缺点 Makefile什么是MakefileMakefile文件命名和规则Makefile的使用工作原理…

SpringSpringBoot常用注解总结

0.前言 可以毫不夸张地说&#xff0c;这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法&#xff0c;掌握搞懂&#xff0c;使用 SpringBoot 来开发项目基本没啥大问题了&#xff01; 为什么要写这篇文章…

【分享】Excel表格的密码忘记了怎么办?附解决办法

我们知道通过设置密码可以保护Excel表格&#xff0c;可有时候设置后很久没用就把密码忘记了&#xff0c;而Excel并没有找回密码的选项&#xff0c;那要怎么办呢&#xff1f;今天小编就来分享一下忘记Excel密码的解决方法。 Excel表格可以设置多种密码&#xff0c;不同密码对应…

短视频平台-小说推文(Lofter)推广任务详情

​Lofter日结内测中&#xff0c;可能暂只对部分优质会员开放! 注意 Lofter 关键词7天未使用&#xff0c;可能会被下线。 Lofter 不再需要回填视频链接了。 接Lofter官方通知 关于近期部分博主反馈播放量高但搜索量很低的问题尤其是快手平台&#xff0c;我们做了代码、服务器…

No.040<软考>《(高项)备考大全》【第24章】成熟度模型

【第24章】成熟度模型 1 考试相关2 第一维四个阶梯3 项目成熟度模型OPM3CMMI过程域 4 成熟度级别级别区别 5 练习题参考答案&#xff1a; 1 考试相关 选择可能考0-1分&#xff0c;案例论文不考。 2 第一维四个阶梯 3 项目成熟度模型OPM3 CMMI过程域 CMMI过程域可以分为4类&a…

智能对话机器人Rasa学习资料

文章目录 背景收集的Rasa学习资料官网B站其他 类似产品教学机器人售后咨询效果手机推荐效果 背景 最近做了一个Ros2项目&#xff0c;界面如下图&#xff1a; 客户要求能够使用语音快速执行特定动作如:打开视频窗口、显示小车1视频、无人机1返航等&#xff0c;这就涉及到了自然…

C++ : 整体工程构架设计流程

重点&#xff1a; 1.一个项目通常分为bin(存放项目生成的dll和整体工程的exe)&#xff0c;code(存每个项目的代码)&#xff0c;lib(存每个项目生成的lib),pdb(存放项目生成的pdb文件)&#xff0c;sln(解决方案) 整体创建流程&#xff1a; 一个主干项目&#xff0c;其他若干依赖…

Java接口自动化测试框架系列:提升测试效率的自动化测试框架

目录&#xff1a;导读 一、什么是自动化测试 二、自动化测试的缺点 三、自动化测试框架选型 原则 对比 四、框架构建 【自动化测试工程师学习路线】 一、什么是自动化测试 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。 通常&#xff0c;在设计了测试…

【UE】暂停游戏界面及功能实现

效果 步骤 1. 首先在项目设置中添加一个暂停的操作映射 2. 新建一个控件蓝图&#xff0c;命名为“PauseMenuWidget” 3. 打开“ThirdPersonCharacter”&#xff0c;添加一个布尔类型变量&#xff0c;命名为“isScreenShow”&#xff0c;用于判断当前玩家是否打开了暂停界面 在…

【Linxu网络服务】DHCP

DHCP 一、DHCP工作原理1.1背景1.2优点1.3 DHCP分配方式1.4DHCP工作原理 二、使用DHCP动态配置主机地址2.1实验一&#xff1a;动态配置主机地址2.2给Linux客户机配置动态地址**2.4设置一个外网口&#xff0c;给客户端设置一个固定的ip地址 一、DHCP工作原理 作为服务端负责集中…

uniapp 之 将marker 渲染在地图上 点击弹层文字时显示当前信息

目录 效果图 总代码 分析 1.template 页面 地图显示代码 2. onload ①经纬度 ②取值 ③注意 ④ 3.methods ① 先发送 getStationList 请求 获取 数组列表信息 ② regionChange 视野发生变化时 触发 分页逻辑 ③ callouttap 点击气泡时触发 查找 当前 marker id 等…