C语言系列2——C语言中的运算符与表达式

目录

  • 写在开始
  • 1. 算术运算符与表达式
  • 2. 关系运算符与逻辑运算符
  • 3. 运算符优先级与结合性
  • 4. 实例练习题目
    • 4.1 题目介绍
    • 4.2 参考答案
  • 写在最后

写在开始

在学习C语言编程过程中,理解运算符与表达式是至关重要的基础知识。本文将介绍C语言中的算术、关系和逻辑运算符,以及运算符的优先级与结合性,同时提供表达式的构建与计算实例。

1. 算术运算符与表达式

在C语言中,算术运算符用于执行基本的数学运算。常见的算术运算符包括:

  • 加法运算符(+):用于将两个数相加。
  • 减法运算符(-):用于将一个数减去另一个数。
  • 乘法运算符(*):用于将两个数相乘。
  • 除法运算符(/):用于将一个数除以另一个数,结果为商。
  • 求余运算符(%):用于求两个数相除的余数。

算术表达式由运算符和操作数组成。操作数可以是变量、常量或表达式。在表达式中,算术运算符遵循特定的优先级和结合性规则。

例如,下面是一些算术表达式的示例:

int a = 10;
int b = 20;
int sum = a + b;        // 加法运算,结果为30
int difference = a - b; // 减法运算,结果为-10
int product = a * b;    // 乘法运算,结果为200
int quotient = a / b;   // 除法运算,结果为0(整数除法,结果被截断为整数)
int remainder = a % b;  // 求余运算,结果为10

需要注意的是,在C语言中除法运算符(/)执行的是整数除法。如果操作数都是整数,则结果也会被截断为整数,小数部分将被舍弃。如果希望得到浮点数的结果,可以将操作数之一或两者都转换为浮点数。

2. 关系运算符与逻辑运算符

关系运算符用于比较两个值之间的关系,返回真(1)或假(0)。常见的关系运算符包括:

  • 等于(==):用于判断两个值是否相等。
  • 不等于(!=):用于判断两个值是否不相等。
  • 大于(>):用于判断一个值是否大于另一个值。
  • 小于(<):用于判断一个值是否小于另一个值。
  • 大于等于(>=):用于判断一个值是否大于或等于另一个值。
  • 小于等于(<=):用于判断一个值是否小于或等于另一个值。

逻辑运算符用于在表达式中组合多个条件,并返回真(1)或假(0)。常见的逻辑运算符包括:

  • 逻辑与(&&):当所有条件都为真时,结果为真。
  • 逻辑或(||):当至少一个条件为真时,结果为真。
  • 逻辑非(!):用于取反,将真变为假,假变为真。

例如,下面是一些关系和逻辑表达式的示例:

int x = 10;
int y = 20;
int z = 30;// 关系表达式
int result1 = x > y;    // 结果为假(0)
int result2 = x == y;   // 结果为假(0)// 逻辑表达式
int result3 = (x < y) && (y < z);   // 结果为真(1)
int result4 = (x < y) || (y > z);   // 结果为真(1)

关系和逻辑运算符通常与条件语句(如if语句)一起使用,用于控制程序的流程和逻辑。通过适当组合关系和逻辑运算符,可以构建复杂的条件判断和逻辑操作,实现更灵活的程序功能。

3. 运算符优先级与结合性

在C语言中,每个运算符都有一个优先级,用于确定表达式中运算符的执行顺序。如果表达式中有多个运算符,优先级高的运算符将先于优先级低的运算符执行。此外,如果存在相同优先级的运算符,则根据结合性确定执行顺序,结合性有左结合、右结合和无结合。

常见的运算符优先级由高到低为:

  1. 括号(())
  2. 单目运算符(例如:++、–、!)
  3. 乘除法运算符(*、/、%)
  4. 加减法运算符(+、-)
  5. 关系运算符(>、<、==、!=)
  6. 逻辑与运算符(&&)
  7. 逻辑或运算符(||)
  8. 赋值运算符(=)

运算符优先级决定了表达式中各个运算符的执行顺序。例如,在表达式 a + b * c 中,乘法运算符的优先级比加法运算符高,所以会先执行乘法运算,然后再执行加法运算。

结合性则决定了具有相同优先级的运算符在没有括号的情况下是如何组合的。例如,加法和乘法运算符都是左结合的,所以在表达式 a + b + c 中,先计算 a + b,然后再与 c 相加。

4. 实例练习题目

4.1 题目介绍

  1. 计算两个数的平均值

    • 编写一个程序,接收用户输入的两个数,然后计算它们的平均值,并将结果输出到屏幕上。
  2. 判断一个数是否为偶数

    • 编写一个程序,接收用户输入的一个整数,然后判断该数是否为偶数,并将判断结果输出到屏幕上。
  3. 求解二元一次方程

    • 编写一个程序,接收用户输入的三个整数a、b、c(其中a和b不为0),然后求解二元一次方程ax + by = c的解,并将结果输出到屏幕上。
  4. 判断一个年份是否为闰年

    • 编写一个程序,接收用户输入的一个年份,然后判断该年份是否为闰年,并将判断结果输出到屏幕上。

4.2 参考答案

计算两个数的平均值

#include <stdio.h>int main() {int num1, num2;float average;// 获取用户输入的两个数printf("请输入两个数:");scanf("%d %d", &num1, &num2);// 计算平均值average = (num1 + num2) / 2.0;// 输出结果printf("两个数的平均值为:%.2f\n", average);return 0;
}

判断一个数是否为偶数

#include <stdio.h>int main() {int num;// 获取用户输入的整数printf("请输入一个整数:");scanf("%d", &num);// 判断是否为偶数if (num % 2 == 0) {printf("%d 是偶数。\n", num);} else {printf("%d 不是偶数。\n", num);}return 0;
}

求解二元一次方程

#include <stdio.h>int main() {int a, b, c;float x, y;// 获取用户输入的系数printf("请输入二元一次方程的系数(a、b、c):");scanf("%d %d %d", &a, &b, &c);// 求解方程x = (float)(c - b) / a;y = (float)(c - a) / b;// 输出结果printf("方程的解为:x = %.2f, y = %.2f\n", x, y);return 0;
}

判断一个年份是否为闰年

#include <stdio.h>int main() {int year;// 获取用户输入的年份printf("请输入一个年份:");scanf("%d", &year);// 判断是否为闰年if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {printf("%d 年是闰年。\n", year);} else {printf("%d 年不是闰年。\n", year);}return 0;
}

写在最后

通过本文的介绍,读者可以更好地理解C语言中运算符与表达式的概念及其在程序设计中的应用。为了巩固所学知识,建议读者进行相关的实例练习,并深入了解不同运算符在表达式中的运用方式

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

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

相关文章

ARP请求的构造过程

ARP请求的构造过程&#xff1a; ARP请求的构造&#xff1a; 当设备A&#xff08;发起者&#xff09;想要与设备B&#xff08;目标&#xff09;通信&#xff0c;但它只知道设备B的IP地址&#xff08;例如&#xff0c;192.168.1.2&#xff09;&#xff0c;而不知道其MAC地址。设备…

算法沉淀——链表(leetcode真题剖析)

算法沉淀——链表 01.两数相加02.两两交换链表中的节点03.重排链表04.合并 K 个升序链表05.K个一组翻转链表 链表常用技巧 1、画图->直观形象、便于理解 2、引入虚拟"头节点" 3、要学会定义辅助节点&#xff08;比如双向链表的节点插入&#xff09; 4、快慢双指针…

976.三角形的最大周长(Java)

题目描述&#xff1a; 给定由一些正数&#xff08;代表长度&#xff09;组成的数组 nums &#xff0c;返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形&#xff0c;返回 0。 输入&#xff1a; nums [1,2,1,10] 输出&#xff1…

从源码学习访问控制符使用

从源码学习访问控制符使用 Java中的访问控制符 ​ 在Java中&#xff0c;有四个访问控制符&#xff1a;public、protected、default&#xff08;默认或缺省&#xff0c;不使用关键字&#xff09;和private。 ​ 它们的访问范围如下&#xff1a; public&#xff1a;公共访问权…

【从零到Offer】MySQL最左匹配

前言 ​ 相信大家在日常开发时&#xff0c;也经常能听到“最左匹配”这个词&#xff0c;那么什么是最左匹配呢&#xff1f;本篇文章就带你一起探索“最左匹配”的神奇秘密。 什么是最左匹配 ​ 最左匹配&#xff0c;通常指的是最左前缀匹配原则&#xff0c;即MySQL在检索数据…

联想thinkpad-E450双系统升级记

早期笔记本联想thinkpad-E450双系统 大约16年花4000多大洋&#xff0c;买了一台thinkpad-E450屏幕是16寸本&#xff0c;有AMD独立显卡&#xff0c;i5cpu&#xff0c;4G内存。 . 后来加了一个同型号4G内存组成双通道&#xff0c; . 加了一个三星固态500G&#xff0c; . 换了一个…

【C++】类的隐式类型转换

文章目录 前言一、隐式类型转换二、explicit关键字总结 前言 一、隐式类型转换 C 类的隐式类型转换是指当一个类定义了适当的构造函数或转换函数时&#xff0c;可以在需要时自动进行类型转换&#xff0c;而无需显式调用转换函数或构造函数。这使得代码更具灵活性和简洁性。下面…

【PyTorch】改变张量(Tensor)形状操作

PyTorch深度学习总结 第二章 PyTorch中改变张量(Tensor)形状操作 文章目录 PyTorch深度学习总结一、前言二、改变张量形状 一、前言 上文讲解了张量生成和信息获取的知识&#xff0c;本文将针对张量的操作进行详细讲解。 二、改变张量形状 1、改变张量形状的函数总结&#x…

备战蓝桥杯---动态规划(入门2)

今天主要介绍区间dp比较难的题&#xff1a; 下面是分析&#xff1a; 我们如果先固定点V0&#xff0c;那我们得去枚举两个点使它构成三角形&#xff0c;同时求目标值也比较难确定&#xff08;起始与终止都带0&#xff09;&#xff0c;于是我们考虑固定边&#xff0c;我们固定v0…

简单数学问题之素数的判断及获取

1.素数的判断 #include <iostream> using namespace std; bool isPrime(int n){if(n<1) return false;//大于1的for(int i2;i*i<n;i)if(n%i0) return false;//只能被1及本身整除的数return true; } int main(){int num;cin>>num;if(isPrime(num))cout<&l…

DS18B20 与 单总线

学习链接&#xff1a;学习B站 up 主金善愚的DS18B20课程 一、单总线概述 单总线芯片&#xff0c;在其内部的 ROM 中都编制好了唯一的序列号&#xff08;64位&#xff09;。 单总线芯片在应用时对时序的要求非常高。 二、单总线的基本操作 三、DS18B20的主要性能 电源电压范围&…

Linux 常用的命令

① 基本命令 uname -m 显示机器的处理器架构uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件(SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息arch 显示机器的处理器架构uname -m 显示机器的处…

「数据结构」哈希表1:基本概念

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;Java数据结构 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 基本概念 &#x1f349;哈希表&#x1f349;哈希冲突&#x1f34c;负载因子调节&#x1f34c;解决哈希冲突&#x1f95d;1. 闭散…

34 使用 LNMP 架构部署动态网站环境

源码包程序 LNMP 动态网站部署架构 LNMP 动态网站部署架构是一套由 Linux Nginx MySQL PHP 组成的动态网站系统 解决方案。 1. 准备工作 在使用源码包安装服务程序之前&#xff0c;首先要让安装主机具备编译程序源码的环境。这需要 具备 C 语言、C语言、Perl 语言的编译器&…

域名解析大概过程笔记

不同情况下处理方式有所不同&#xff1a; 输入域名访问&#xff1a; 浏览器首先会检查本地缓存&#xff0c;看是否有对应域名的解析记录。如果本地缓存没有&#xff0c;浏览器会查找操作系统的 hosts 文件&#xff0c;看是否有对应的 IP 地址。如果 hosts 文件中没有&#xff0…

【QT+QGIS跨平台编译】之三十七:【Shapelib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、Shapelib介绍二、Shapelib下载三、文件分析四、pro文件五、编译实践一、Shapelib介绍 Shapelib是一个开源的C库,用于读取、写入和操作ESRI Shapefile格式的地理矢量数据。 ESRI Shapefile是一种常见的地理信息系统(GIS)文件格式,用于存储地理矢量数据,包括…

【Linux系统学习】2.Linux基础命令

Linux基础命令 Linux的目录结构 Linux命令入门 目录切换相关命令(cd/pwd) 相对路径、绝对路径和特殊路径符 创建目录命令(mkdir) 文件操作命令part1(touch、cat、more&#xff09; 文件操作命令part2(cp、mv、rm&#xff09; 查找命令(which、find&#xff09; grep、wc和管道符…

AI绘画作品的展示和变现-2

4.7 制作红包封面 中国的节日和传统文化元素仍然可以成为创作者们的创作灵感&#xff0c;创造出更多的变现机会。比如元宵节&#xff0c;可以制作大型元宵图案&#xff0c;进行引流并卖出元宵。 而春分、谷雨等节气也可以成为创作的灵感来源&#xff0c;创作出与之相关的图案&…

高中时期,三次下棋惨败经历

我不是很聪明&#xff0c;也不是太笨。爱好也比较多&#xff0c;下棋就是。高中时期学习还挺好&#xff0c;有时就会试试。同学水平都差不多&#xff0c;也没发现明显差异。 第一次发现水平差。有一次元旦&#xff0c;下棋娱乐&#xff0c;有一位下得比我好&#xff0c;当然不…

双场板功率GaN HEMT电容模型以精确模拟开关行为

标题&#xff1a;Capacitance Modeling in Dual Field-Plate Power GaN HEMT for Accurate Switching Behavior&#xff08;TED.16年&#xff09; 摘要 本文提出了一种基于表面电位的紧凑模型&#xff0c;用于模拟具有栅极和源极场板&#xff08;FP&#xff09;结构的AlGaN/G…