C语言学习 三、运算符与表达式

3.1 运算符分类

c语言提供了13种类型的运算符,如下所示:

(1)算术运算符(+ - * / %)

(2)关系运算符(> < == >= <= !=)

(3)逻辑运算符(!&& ||)

(4)位运算符(<< >> ~ | ^ &)

(5)赋值运算符(=及其扩展赋值运算符)

(6)条件运算符(?:)

(7)逗号运算符(,)

(8)指针运算符(*和&)(指针时用到)

(9)求字节运算符(sizeof)

(10)强制类型转换运算符((类型))

(11)分量运算符(.->)(结构体时用到)

(12)下标运算符([])(数组时用到)

(13)其他(如函数调用运算符())

3.2 算术运算符及其算术表达式

注意点:

  • 操作符/的两个操作数都是整型数时,执行整除运算,其他情况下执行浮点型数除法
  • %为取模运算符,它接收两个整型操作数,将左操作数除以右操作数,返回值为余数
  • 由算术运算符组成的式子称为算术表达式,表达式一定有一个值

【算数运算符代码实例】


#include <stdio.h>int main() {//5*2=10 6/3=2 11%4=3//4+10-2+3=15int result = 4+5*2-6/3+11%4;printf("result=%d\n",result);//15return 0;
}

 3.3 关系运算符与关系表达式

注意:

  • 关系表达式的值只有真和假,对应为1真0假
  • 由于c语言中没有布尔类型,所以在c语言中0值代表假非0值即为真
  • 关系运算符优先级低于算数运算符。
  • 判断整型变量i是否等于3时,可以写成3==i;即把常量写在前面而把变量写在后面
  • 如果判断三个数是否相等,绝对不能写成if(5==5==5),这样无论何时都为假,因为首先5==5得到结果为1,然后1==5得到结果为0,若判断a,b,c是否相等,应写成a==b && b==c

【关系运算符使用】

#include <stdio.h>//关系运算符,优先级小于算术运算符
int main() {int a;//使用while循环方便一直测试//只要while循环中为真就会一直进入循环//scanf匹配成功的时候返回值为1,使while循环为真while(scanf("%d",&a)){if(3<a && a<10){ //若写成(3<a<10)将一直循环下去,错误写法printf("a between 3 and 10\n");}else{printf("a is not between 3 and 10\n");}}return 0;
}

【运行效果截图】

【小结】

若是写成(3<a<10)在数学上是正确,但在程序中是错误的。

首先,3<a结果只有1或0两种,由于1和0都小于10,所以无论a值为多少,表达式始终为真。

因此在判断变量a是否大于3且同时小于10时,要写成 a>3 && a<10

3.4 逻辑运算符与逻辑表达式

注意:

  • 逻辑非! 的优先级高于算术运算符
  • 逻辑与&& 与 逻辑或|| 的优先级低于关系运算符
  • 逻辑表达式的值只有真和假,对应为1和0

【逻辑运算符使用】

#include <stdio.h>//逻辑与&& 和 逻辑或|| 例子 logic  判断闰年
int main() {int year, i, j=1;//因需重复测试,所以用while循环while (scanf("%d", &year)) {if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {//是闰年printf("%d is leap year\n", year);} else {//不是闰年printf("%d is not leap year\n", year);}}//逻辑非!例子i = !!j; //自右至左,即先计算!j,再计算!(!j)printf("i value=%d\n", i); //1return 0;
}

【运行效果截图】

【逻辑与 和 逻辑或 短路运算案例】

#include <stdio.h>//逻辑与&& 和 逻辑或|| 的短路运算
int main() {int i = 0;//当i为真时输出后面的printf,当i为假时不输出//当i为假时不会执行逻辑与后的表达式,称为短路运算i && printf("Hello, World!\n");//i && printf("Hello, World!\n");等价于下面的if语句if(i){printf("Hello, World!\n");}//逻辑或|| 的短路运算,当i为真时不会执行后面的表达式i = 1;i|| printf("Hello, World!\n");return 0;
}

【运行效果截图】

【小结】

  • 逻辑与短路运算:当前一个表达式为时,后面的表达式不会得到执行
  • 逻辑或短路运算:当前一个表达式为时,后面的表达式不会得到执行

3.5 赋值运算符

注意:

  • 左值:放在赋值运算符左边的,为左操作数,只有变量可以成为左值

【例】

a = b + 25;

  • 右值:放在赋值运算符右边的东西

【错误演示】

#include <stdio.h>int main() {int a = 1,b = 2;//错误演示b + 25 = a;return 0;
}

【报错】

error: lvalue required as left operand of assignment

复合赋值运算符

是一种缩写形式,可以对变量的赋值操作变得更加简洁

【例】

iNum = iNum + 5;    //对变量iNum进行赋值操作,值为变量本身与一个整型常量5相加的结果

【使用复合语句】

iNum += 5;

 【加后赋值与乘后赋值的用法】

#include <stdio.h>int main() {int iNum, iResult;iNum = 10;iResult = 3;iNum += 5; //等价于 iNum = iNum + 5 = 10+5=15iResult *= iNum; //等价于 iResult = iResult * iNum = 3*15=45printf("iNum=%d\n", iNum); //15printf("iResult=%d\n", iResult); //45
}

【运行结果】

 3.6 求字节运算符sizeof

注意:

  • sizeof不是函数
  • sizeof用于求常量变量所占空间的大小
  • sizeof结果的单位是 字节

【求字节运算符例子】

#include <stdio.h>//sizeof运算符(求字节运算符)
int main() {int i = 0;printf("i size is %d\n", sizeof(i));//4return 0;
}

【运行结果】

【小结】

运行结果为i size is 4,可以得知整型变量所占空间大小是4字节

3.7 课时作业

  • 课时3作业1

描述:判断某个年份是不是闰年,如果是闰年,输出“yes”,否则输出“no”

输入:输入一行,只有一个整数x(0<=x<=10000)

输出:只有一行字符

闰年的判断:可以被4整除同时不能被100整除,或者可以被400整除

【课时3作业1代码】

#include <stdio.h>//课时3作业1
//判断某个年份是不是闰年,如果是闰年,输出“yes”,否则输出“no”
//输入:输入一行,只有一个整数x(0<=x<=10000)
//输出:只有一行字符
//闰年的判断:可以被4整除同时不能被100整除,或者可以被400整除
int main() {int year;scanf("%d",&year);if(year%4==0&&year%100!=0||year%400==0){printf("yes\n");}else{printf("no\n");}return 0;
}

【运行结果】

  •  课时3作业2

描述:读取一个整型数,字符,浮点数,分别到变量i,j,k中,然后将i,j,k直接相加并输出,小数点后保留两位小数,不用考虑输入的浮点数的小数部分超过了两位。

输入:一个整形数,字符,浮点数

输出:i,j,k三个变量的求和值

【课时3作业2代码】

#include <stdio.h>//课时3作业2
//读取一个整型数,字符,浮点数,分别到变量i,j,k中,然后将i,j,k直接相加
// 并输出,小数点后保留两位小数,不用考虑输入的浮点数的小数部分超过了两位
//输入:一个整形数,字符,浮点数
//输出:i,j,k三个变量的求和值
int main() {int i;char j;float k;scanf("%d %c%f",&i,&j,&k);printf("%0.2f\n",i+j+k);return 0;
}//%0.2f 不限制浮点数输出的整体长度  %5.2f也行:即小数点前的数字无规定

【运行结果】

【小结】

输出时要控制格式,混合输入中每次在%c之前需要加一个空格

整型数、字符、浮点数可以直接相加运算

同时输入3个数的读取顺序

3.8 c语言运算符优先级表

 说明:

  • 同一优先级运算符,运算次序由结合方向所决定
  • 优先级简记: ! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

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

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

相关文章

【职位管理】某大型能源化工企业职位管理体系搭建咨询项目

随着企业的发展&#xff0c;企业内部员工的数量不断增加。而管理职位的有限性使得员工的晋升出现“过独木桥”的现象&#xff0c;有些企业为了缓解这种问题&#xff0c;采取增设副职与助理岗位的办法&#xff0c;却导致组织机构迅速膨胀。那么&#xff0c;华恒智信专家是如何解…

在基于全志V851se的TinyVision上手动构建 Linux 6.1 + Debian 12 镜像

构建 SyterKit 作为 Bootloader SyterKit 是一个纯裸机框架&#xff0c;用于 TinyVision 或者其他 v851se/v851s/v851s3/v853 等芯片的开发板&#xff0c;SyterKit 使用 CMake 作为构建系统构建&#xff0c;支持多种应用与多种外设驱动。同时 SyterKit 也具有启动引导的功能&a…

mysql数据类型和常用函数

目录 1.整型 1.1参数signed和unsigned 1.2参数zerofill 1.3参数auto_increment 2.数字类型 2.1floor()向下取整 2.2随机函数rand() 2.3重复函数repeat() 3.字符串类型 3.1length()查看字节长度&#xff0c;char_length()查看字符长度 3.2字符集 3.2.1查看默认字符…

海外舆情监控的重要性以及云手机的推荐

海外市场不仅有着无尽的商机&#xff0c;同时也存在着各种各样的挑战。例如&#xff0c;海外市场舆情的复杂变化给企业带来了潜在风险&#xff0c;尤其在新媒体技术快速发展的时代&#xff0c;舆论对企业品牌形象的影响日益巨大。本文将详细探讨海外舆情监控的重要性以及为大家…

FlorisBoard:Android开源键盘的现代化选择

FlorisBoard&#xff1a;Android开源键盘的现代化选择 简介 FlorisBoard是一款免费且开源的安卓键盘&#xff0c;适用于Android 7.0及以上版本的设备。它的现代化设计和用户友好的界面使其在众多键盘应用中脱颖而出。FlorisBoard的独特之处在于它注重用户体验的同时&#xff0…

抖音视频提取工具可导出视频分享链接|视频爬虫批量下载

抖音无水印视频批量下载工具操作指南 一、工具介绍 我们开发了一款功能强大的视频批量下载工具&#xff0c;不仅能够通过单个视频链接进行提取&#xff0c;还可以通过关键词进行视频搜索&#xff0c;Q:290615413实现批量提取和有选择性的下载。 二、操作步骤 2.1 关键词批量…

IO网络通信

IO Bio&#xff1a; 同步阻塞&#xff0c;一个线程一次连接&#xff0c;基于字符流/字节流 Nio&#xff1a;同步非阻塞 一个线程多个连接&#xff0c;多个请求注册到多路复用selector上&#xff0c;多路复用器轮训连接 面向缓冲区&#xff0c; 从某通道读取数据到缓存区&…

Android:adb命令

执行adb命令的窗口如下 Mac或Linux系统里的终端窗口&#xff1b; window系统运行输入cmd打开的指令窗口&#xff1b; Android Studio 里控制下面的Terminal窗口 1. 查看已链接的设备和模拟器 adb devices -l 2. 查看Android内核版本号 adb shell getprop ro.build.version.re…

数据结构和算法:哈希表

哈希表 哈希表&#xff08;hash table&#xff09;&#xff0c;又称散列表&#xff0c;它通过建立键 key 与值 value 之间的映射&#xff0c;实现高效的元素查询。具体而言&#xff0c;向哈希表中输入一个键 key &#xff0c;则可以在 &#x1d442;(1) 时间内获取对应的值 va…

CSS样式表 样式优先级 选择器以及选择器的权重优先级

CSS组成 css由选择符和声明组成&#xff0c;声明又分为属性和属性值 属性必须放在花括号里面&#xff0c;属性与属性值必用冒号连接 每条声明用分号结束 当一个属性有多个属性值的时候&#xff0c;属性值与属性值部分先后顺序&#xff0c;用空格隔开 在书写样式过程中、空格、换…

软文营销塑造品牌形象,迅推客助力企业成功求发展

企业可以选择适合自身的新闻宣传方法。迅推客作为互联网整合营销机构&#xff0c;积极推动软文营销&#xff0c;助力企业塑造高端品牌形象。 1、新闻稿战略规划。 新闻宣传前要有明确的战略规划。在新闻稿的创作过程中&#xff0c;企业的需求与消费者的需求巧妙地融合在一起。…

室内3D模型选择指南:哪家更值得信赖?

如今室内设计的3D模型已经成为了一种重要的设计工具。它们能够帮助设计师们更好地向客户展示他们的设计想法&#xff0c;同时也让客户能够更直观地理解他们的需求。然而&#xff0c;面对市场上众多的室内3D模型网站&#xff0c;我们该如何选择呢? 室内3D模型选择指南&#xff…

echarts系列:echarts增加loading

背景 最近在大屏项目研发时&#xff0c;存在多个echarts图表&#xff0c;有些接口获取数据较慢&#xff0c;需要加loading样式&#xff1b; 解决方案 翻阅api&#xff0c;找到showLoading可进行设置 参考&#xff1a; 加载动画效果 显示加载动画效果。可以在加载数据前手动…

10个优秀的Github开源项目

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板 EX-chatGPT-精准搜索工具 feishu-chatgpt-飞一般的工作体验工具 Knife4j-是一个集Swagger2 和 OpenAPI3为一体的增强解决方案 Kooder 是 Gitee 团队开发的一个代码搜索系统 mtbird 是一款低代码可视化页面生成器 S…

docker一键部署若依前后端分离版本

比如这里把文件放到/xin/docker/jiaoZ/的目录下&#xff0c;jar包和下面的配置文件都放在这个文件夹下。 注意要把jar端口改为你实际启动的&#xff0c;映射端口也可以改为你想要的。 这里的映射端口为&#xff1a;nginx监听80端口&#xff0c;jar在8620端口&#xff0c;mysq…

Emotion Prompt-LLM能够理解并能通过情感刺激得以增强

Large Language Models Understand and Can be Enhanced by Emotional Stimuli 情感智能对我们的日常行为和互动产生了显著的影响。尽管大型语言模型&#xff08;LLMs&#xff09;被视为向人工通用智能迈进的一大步&#xff0c;在许多任务中表现出色&#xff0c;但目前尚不清楚…

matlab 条件数的倒数

目录 一、概述1、算法概述2、主要函数3、参考文献二、条件设置错误的矩阵的敏感度三、求解单位矩阵的条件四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 1、算法概述

.locked勒索病毒是什么,企业数据被加密了如何恢复?

.locked勒索病毒介绍 .locked勒索病毒是一种恶意软件&#xff0c;它利用加密技术锁定用户的数据或系统&#xff0c;并以此进行勒索。用户一旦感染此病毒&#xff0c;将无法访问其重要文件&#xff0c;病毒会要求用户支付一笔赎金以获取解密密钥。这种病毒通常使用强大的加密算法…

PMP证书可以挂靠?

PMP项目管理是由美国项目管理协会&#xff08;PMI&#xff09;提出的&#xff0c;针对项目管理专业人士的资格认证。它被公认为全球项目管理领域含金量最高的认证&#xff0c;与MBA、MPA并列为三大就业金字招牌。PMP认证在全球190多个国家及地区得到高度认可。通过PMP认证考试可…

面试常问:为什么 Vite 速度比 Webpack 快

前言 最近作者在学习 webpack 相关的知识&#xff0c;之前一直对这个问题不是特别了解&#xff0c;甚至讲不出个123....&#xff0c;这个问题在面试中也是常见的&#xff0c;作者在学习的过程当中总结了以下几点&#xff0c;在这里分享给大家看一下&#xff0c;当然最重要的是…