C语言入门(基础二)

2023-11-08

延续上作,本篇博客带大家继续入门C语言

运算符

C语言为我们提供了很多的运算符,有单目运算符,双目运算符和三目运算符,这里的一目二目三目指的是操作的对象个数,我们可以使用这些运算符来解决一些实际的问题,接下来就一一认识一下吧:

赋值运算符:‘=’就是赋值运算符,是双目运算符,可以使用它对变量进行赋初值,例如:
在这里插入图片描述
我们在上面的代码中分别对a,b,c赋了初值,在后面我们使用到它们的时候它们的值就是我们赋给他们的,这就是赋值操作符。

算术运算符:‘+’ ,‘ -’,‘*’,“/”,“%”,这些都是双目运算符,/是除法,%是取模(余数),这些运算符想必大家是很熟悉的,数学中经常用到,在这里我想多说的是C语言只会进行加法运算,所谓的减法其实是加负数。
这里还有两个大家不熟悉的算术运算符‘++’和‘- -’(这里的减减中间是没有空格的,因为编译器的问题我加了一个空格以让大家看清),这两个运算符是自增和自减的意思,要注意它们放的位置不同效果不同,上代码:
在这里插入图片描述
在这里插入图片描述
可以看到我们对a赋初值为0,在输出的时候应该是a++,应该是++a,可以看到结果是不同的。
++在变量的前面,是先对变量的值加1,再使用变量,如果是在后面先使用变量的值,再对变量进行加一操作。
在这里插入图片描述
现在应该清楚了吧。

关系运算符
“>”,"<=",">=","==","<","!=",双目运算符,关系运算符的含义很简单,它是用于两个值的比较,返回的值只有两个,关系成立返回真,关系不成立返回假,真值是1,假值是0,上代码:
在这里插入图片描述
在这里插入图片描述
两次的代码不一样之处就是b和c的值相不相等,==是判断左右两边的值是否相等的运算符,我们将其结果存放到a中去,可以看到b与c相等时a=1,不相等时a=0,所以说关系运算符只会返回1/0;

这里我想多说一些,一定要区分==和=,它们是完全不一样的运算符,前者起的是判断作用,后者则是赋值,如果使用错误会造成不可预期的错误,所以一定不要记混了,即使是一些经验丰富的程序员有时候也会反这种错误。

逻辑运算符
“&&”,“||”,“!”,这三个叫逻辑运算符,它们会根据表达式的真假返回真值或者假值,是不是和上面的关系运算符有点类似?不同的是这里的真是非0值(等价1),假依然是0.

“&&”:双目操作符,逻辑与,两边都为真的时候返回真,有任何一方为假就返回假。
在这里插入图片描述
a为假,所以返回0.

“ ||” :双目操作符,逻辑或,只要有一边为真就返回真,否则返回假。
“ !”:单目操作符,逻辑非,就是把真变成假,把假变成真

位逻辑运算符
“&”,“|”, “^” , " ~"
“&”:按位与,双目运算符,相同为1,不同为0。
“|”:按位或,双目运算符,有1为1,无1为0。
“^”:按位异或,双目运算符,相同为0,相异为1。
“ ~ ”:按位取反,单目运算符,将1变成0,0变成1。
要注意这里的按位的意思是按照二进制的补码进行,这也就意味着这些运算符不能对小数使用,不清楚补码的小伙伴快去补知识啦。

移位运算符:和上面的一样,也是对二进制补码进行
“<<” :左移运算符,将二进制补码左移一位,在最低位补0;
例如:将0001左移一位得到的是0010。
“>>”:右移操作符,将二进制补码右移一位,最高位补原来的最高位(符号位)
例如:将1000右移一位得到1100。

复合赋值运算符:其实是一种缩写
"+= " "-= " " * = " "/= " " %= " "&= " "|= " "~= " “^=”
a+=b其实就是a=a+b;其他的运算符都是一样的。

优先级:非常重要的一个概念,运算符的优先级会决定运算顺序,就好比乘除要比加减先算,以下是运算符优先级表,每一本C语言的入门书都会有这张表:

在这里插入图片描述
这里建议大家直接上手操作,多练。

C语言三大结构

所有的C语言程序都是由这三种结构组成的,可见这三大结构的重要性。

顺序结构

顺序结构是最简单的了,它就是说C语言的每条语句都是自上而下执行的,不会无缘无故地跳过某个语句,也不会无缘无故的重复执行某条语句,从前面的代码中可以看出,在基础一中的最简单程序中只打印了一个Hello world,没有重复打印。

选择结构

选择结构可以决定哪些语句执行,哪些语句不执行。

if语句
首先来看看if语句的基本形式
在这里插入图片描述
除了这种形式外还有如下:
在这里插入图片描述
但是仅仅上面的两种形式是不够用的,例如以下代码;
在这里插入图片描述
这里我想通过输入不同的a来输出不同的值,但是当我输入1的时候却出现了问题,他竟然同时打印了haha和lala,通过分析我们也很容易找出问题,a=1的时候第一个if为真,执行输出了haha,但是程序未结束,继续向下,第二个if判断为假,没有执行hehe,但是else可就要执行了,于是输出了lala。

为了解决这样的问题,C语言的if语句还有一种形式:

在这里插入图片描述

多了一个else if(),就能够解决上述的问题,a=1的时候if判断为真,那么就会跳过后面的else if和else,从而避免了上述问题的发生。
在这里插入图片描述
假如我要在a大于10的时候输出haha,再a大于0且小于10的时候输出hehe,其他的时候输出lala,那么我在写第二个判断的时候就不用写成a>0&&a<10了因为当if判断为假的时候a必然是小于10的,这样就不用重复书写了。

switch语句:C语言选择语句的另外一种。
基本形式如下:
在这里插入图片描述
注意switch后面的变量必须是整形,可以是整形表达式,char也可以,每条语句后都有一个break,可以在执行完语句后跳出选择语句,不会执行下面的语句,如果没有了break,那么下面的代码会出现这样的问题
在这里插入图片描述

在这里插入图片描述
这里令a=‘\0’字符,\0对应的阿斯克码值是0.所以打印了XXXXX,C语言的整形和字符是相通的。

循环语句

循环语句可以让计算机重复的执行某些特定的语句,以完成较复杂的工作。

while循环
在这里插入图片描述
这是while循环的基本写法,括号内可以是表达式,变量名,数字等等,如果是数字的话要么循环会一直进行,要么循环不会进行。
在这里插入图片描述
这样的代码就不会死循环,因为我们人为设置了进入循环的条件,当a大于5的时候表达式就为假,就不会进入循环了,当然我们也可以是使用break来跳出循环,就像这样。
在这里插入图片描述
for循环:for循环是使用比较频繁的一种循环。
在这里插入图片描述
for循环的执行次序如下
1:先执行对变量初始化的语句
2:判断循环条件是否满足
3:若满足则进入大括号执行语句块/若不满足则循环结束
4:执行完语句块后执行语句1.
上面的是第一次for循环的执行步骤,下一次循环的时候就不会执行对变量初始化的语句了,其他的还是一样的。
在这里插入图片描述
这就是一个简单的for循环,当然我们也可以使用break来跳出循环。

还有一种循环叫do while循环
在这里插入图片描述

可以看到do while循环有一个不同于while循环和for循环特点,那就是它在进行第一次循环的时候并没有判断是否进行循环的条件,所以do while循环是一定会进行一次循环的,第二次循环是否进行则需要看循环条件是否满足。
在这里插入图片描述
这里要说所有的循环和选择结构都是可以互相嵌套使用的,比如再while里面使用if,都是可以的。

看得再多也不如上手写上几句代码,C语言的三大结构是很重要的,多练,多想才能够很好的掌握,让我们一起加油,像大厂进发!!!

如有错误恳请读者斧正。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言入门(基础二) 的相关文章

  • 获取assert目录下文件名及读取

    从assert文件下获取文件名字 String fl1 getAssets list 第一层 得到数据 images hello txt String fl1 getAssets list 第一层 第二层 得到数据 helloworld t

随机推荐

  • IDEA+MAVEN 打jar包

    目录 一 分类 二 胖包 三 瘦包 一 分类 jar包是分为胖包和瘦包 何为胖包 何为瘦包 首先胖包指的是带依赖的jar包 瘦包就是没有依赖的jar包 二 胖包 1 在pom xml添加如下Maven插件
  • el-select 结合 el-checkBox 实现下拉全选+多选功能

    实现效果如图所示 具体代码如下
  • RabbitMQ重复消费

    造成重复消费的原因 MQ向消费者推送message 消费者向MQ返回ack 告知所推送的消息消费成功 但是由于网络波动等原因 可能造成消费者向MQ返回的ack丢失 MQ长时间 一分钟 收不到ack 于是会向消费者再次推送该条message
  • 每日一题(day1)

    题目链接 方法一 使用栈进行中序遍历 class Solution public int kthSmallest TreeNode root int k stack
  • 决策树算法处理分类及回归问题的原理及python代码实现

    1 决策树原理介绍 通俗的理解 决策树就是对样本集根据某一个维度d和某一个阈值v进行二分 得到二叉树 即为决策树 通过样本训练计算出维度d和阈值v 即可对预测数据进行分类 如果对二叉树的各子节点value值求平均 将平均值赋予待分类样本 即
  • 疯壳-鸿蒙OS单板应用程序开发

    鸿蒙OS单板应用程序开发 疯壳 出品 a 在源码根目录下新建一个testapp的文件夹 在终端输入 mkdir testapp 指令新建一个名为testapp 的文件夹如下 b 进入testapp文件夹 新建一个名为my first app
  • 一个用于拷贝文件并判断是否拷贝成功的批处理文件

    echo off chcp 65001 copy E opencv build x64 vc15 bin opencv videoio ffmpeg420 64 dll windir set err ERRORLEVEL IF err 1
  • pear文件利用 (远程文件下载、生成配置文件、写配置文件) 从一道题看——CTFshow私教 web40

    web40 考点 pear文件包含 pear是PHP的一个扩展 条件 1 有文件包含点 2 开启了pear扩展 可以当他是一个框架 3 配置文件中register argc argv 设置为On 而默认为Off SERVER argv 生效
  • Vue脚手架的创建步骤

    vue cli脚手架 案例一 案例二 一 脚手架简介 Vue脚手架是Vue官方提供的标准化开发工具 开发平台 它提供命令行和UI界面 方便创建vue工程 配置第三方依赖 编译vue工程 1 webpack 前端项目工程化的标志之一就是引入了
  • Robot Arm 机械臂源码解析

    Robot Arm 机械臂源码解析 说明 Robot Arm是我复刻 也是玩的第一款机械臂 用的是三自由度的结构 你可以理解为了三个电机 三轴有自己的一些缺陷 相比于六轴机械臂而言因为结构的缺陷 不能达到空间内的一些点 这些点又叫做奇异点
  • Mybatis Plus入门

    MyBatis Plus介绍 MyBatis Plus 简称MP 是国内人员开发的 MyBatis 增强工具 在 MyBatis 的基础上只做增强不做改变 为简化开发 提高效率而生 特征 无侵入 Mybatis Plus 在 Mybatis
  • 过年不再被逼相亲——我用python给亲戚展示2022的相亲数据

    人生苦短 我用Python 这不是快过年了吗 又到了一年一度的亲戚大考验环节 没对象的他们会问你 找对象了吗 你要是学计算机专业的 他们会问你 会修电脑吗 出去学了点啥他们也会要求 才艺展示一下 我相信大家都躲不过去 既然躲不过去 那直接上
  • 主力吸筹猛攻指标源码_成功率90%以上【主力吸筹+买点提示+使用方法】通达信指标公式源码...

    成功率 90 以上 主力吸筹 买点提示 使用方法 使用方法 当指标出现红绿柱时就要开始关注 未来几天如果紫线上穿黄线 即是买点 紫 线穿过黄线的当天即可买入 此指标成功率极高 90 COLORBLUE VAR1 REF LOW OPEN C
  • 第6章 计算机的运算方法

    6 1无符号数和有符号数 6 1 1无符号数 寄存器位数反映无符号数的表示范围 6 1 2有符号数 1 机器数与真值 真值 带符号的数 机器数 符号数字化的数 2 原码表示法 整数 x 原是n 1位 用逗号将符号位和数值部分分隔开 小数 用
  • 6s微信连接不上服务器失败是什么原因,6s手机微信打不开怎么回事

    很多使用6s手机的用户反应 微信打不开一直显示正在载入怎么办 下面由学习啦小编为你整理了6s手机微信打不开怎么回事的相关方法 希望对你有帮助 6s手机微信打不开解决方法 如图所示 右下角的微信变成这样子 下方显示 正在载入 无法打开 我们首
  • Docker 安装 Nginx

    拉取镜像 docker pull nginx 启动测试 docker run d p 80 80 nginx p 80 80 端口进行映射 将本地 80 端口映射到容器内部的 80 端口 d nginx 设置容器在在后台一直运行 访问主机
  • c++ set容器

    容器分类 1 顺序容器 2 关联容器 3 无序 散列 容器 vector 向量 连续存储的元素 list 链表 由节点组成的双向链表 每个节点包含着一个元素 forward list 单向链表 deque 双队列 由连续存储的指向不同元素的
  • Qt: multiple definition of XXX

    使用Qt编译源文件时出现很多multiple definition of XXX的报错 可能原因是在多次包含global h时重复定义了变量和函数 但检查过代码后 发现并不存在重复定义的变量和函数 这时 只需要清除项目编译 o文件 重新构建
  • 【云原生之Docker实战】使用docker部署家庭DOS游戏服务器

    云原生之Docker实战 使用docker部署家庭DOS游戏服务器 一 DOS游戏网页版介绍 二 检查宿主机系统版本 三 检查本地docker环境 1 检查docker服务状态 2 检查docker版本 四 下载oldiy dosgame
  • C语言入门(基础二)

    延续上作 本篇博客带大家继续入门C语言 运算符 C语言三大结构 顺序结构 选择结构 循环语句 运算符 C语言为我们提供了很多的运算符 有单目运算符 双目运算符和三目运算符 这里的一目二目三目指的是操作的对象个数 我们可以使用这些运算符来解决