大一C语言学习笔记(6)---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。
下面是傻瓜博主“曾经”犯过的错和一些心得: ༼ つ ◕_◕ ༽つ
1.要想流程控制学好,一定要学会化繁为简,举栗子:
三目运算符 (略?略:略)---就是一个数字嘛,所以它用起来和一个“1”有什么区别?没有区别(语气加重);
定义函数() ---它既然在其他函数中被调用了,那么它和外界(调用此函数的函数)交互的信息或者说是操作只有两种情况:
(1).定义函数中存在printf()函数,会对外界输出()中的信息,所以可以将定义函数当成一个printf()函数;
(2).此定义函数属于有返回值的类型且存在返回值,这样它就可以通过向外界传达 false /ture(通过外界函数的if()来 翻译识别),所以可以将定义函数看成 ture /false;或者向外界传达它的返回值(比如通过外界的printf函数来输出其返回值),所以可以将定义函数看成一个 ? (取决于你在定义函数中写的返回值是什么);
其实根据流程控制来最简单粗暴的看懂代码的方式就是:把自己当成一个编译器,以每一个字符当作一个单位,严谨且严格遵循顺序及语法规则地把代码在脑中或者纸上”跑一遍“(再小的流程也不要跳过),这样”跑“一遍下来,看不懂代码??不好意思臣妾做不到 ~ ~
2.break 与 cotinue 与 return的区别:
break:只针对并终结 switch 或 循环语句,所以说如果break在 for循环 里,那么在编译器成功识别到它的情况下,此break后的所有属于循环内的代码全部失效;它对 if else等语句没有作用,他会从内而外的寻找 swich / 循环语句,那一直到函数最外层都没有找到怎么办呢,那不好意思,此break不合法,奖励报错 X 1;一个break只能干掉一个 switch / 循环语句;
continue:continue 语句很像 break 语句(),唯二不同的是:第一,continue 不能作用于 switch ;第二,执行完 continue 后,会跳到”重新判断是否继续循环”的步骤;
return:它就更简单了,终结函数滴,针对离它距离最近的函数,同理如果编译器成功识别了 return ,那么 rerurn 后的所有在此函数中的代码全部失效;
辅助理解代码:
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=3;++i)
//正常大循环运行三遍,事实上大循环内的代码也确实运行了三遍(continue的作用)
{
for(j=1;j<=3;++i)
//正常大,小循环 3*3,小循环内的代码应该执行9遍,但是事实上只执行了3遍(break的作用)
{
printf("break前面的代码\n"); //输出
if(1)//在if()中,除了 0 等价于 false 以外,其他数都为 true
//if()对break无影响(break向外找循环)
{
break;
}
printf("break后面的代码\n"); //未输出
++j;
}
printf("continue前面的代码\n");//输出
if(1)
//同理,continue只针对循环
{
continue;
}
printf("continue后面的代码\n");//未输出
}
printf("return前面的代码");//输出
if(1)
//if()对return无影响(return向外找函数)
{
return;
}
printf("return后面的代码\n");//未输出
}
运行结果:

3.if()只能操控一个语句的是否执行,所以对多行代码执行进行选择时,需要用 { } 罩上,不过我平常限制一行代码的时候,也会罩上,感觉可读性更高了呢;
4.”A“ 正确,因为其中有一个隐身的 \0
”AA“ 正确
‘A’ 正确
‘AA’ 错误, ’ ‘ 只能装单个字符
5. ....... 我以为会报错(’a‘与’2‘之间的是赋值符而非判断符),但其实输出了 2
if(a=2) 虽然if的作用是接受真假并做出选择,但是当编译器看到”a=2“时,也还是毫不犹豫把”2“赋值给了 a
a+=1;
printf(”%d“,a);
6.无论是”++i“还是”i++“最终都对变量 i 进行了加 1 的操作,二者区别在于赋值时:
”++i“ 是先对变量 i 进行了加一的操作,再进行将(i+1)赋值的操作;
”i++“ 是先对变量 i 进行了将(i)赋值的操作,再进行对变量 i 加一的操作;
7.switch 与 if 语句的选择问题:在针对一个“数字类型”或是”字母类型“进行并列式的选择时,用switch会稍好一些,最典型的栗子 --- 一个简易的两数运算计算器;不知道用哪个的时候,还是用 if 逻辑性更强一点;
8.由于数组【i】指的是数组中的第 (i+1)个元素,所以将其应用到循环语句时一定注意不要踩坑;
9.if(0<x<100) 错误 ; if(0<x&&x<100) 正确;
10.无论是 while 循环还是 for 循环一定要构建好退出循环的条件(忘记对“i”操作只会陷入死循环);
11.取余符号 “%” 两边只能是整型,这句话臣妾已经说累了,可是陛下还是记不住(手动狗头);
博主呢,似一只大一的小菜鸡,欢迎各位前辈指出文章的错误或是不足之处 (~ ̄(OO) ̄)ブ
大一C语言学习笔记(6)---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。的更多相关文章
- C语言学习笔记(四) 流程控制
流程控制 流程控制,说通俗一点就是程序代码执行的顺序.不管对于哪门语言来说,流程控制都是很重要的一部分内容: 流程控制的分类,可以分为三大类: 1.顺序 这个很好理解,顺序执行就是代码从上往下一行行的 ...
- c语言学习笔记(4)——流程控制
一.什么是流程控制 程序代码执行的顺序 流程控制分类 顺序执行 选择执行 定义 有选择的执行某些代码 分类 if switch 循环执行 定义 某些代码会被重复执行 分类 for while do w ...
- 大一C语言学习笔记(5)---函数篇-定义函数需要了解注意的地方;定义函数的易错点;详细说明函数的每个组合部分的功能及注意事项
博主学习C语言是通过B站上的<郝斌C语言自学教程>,对于C语言初学者来说,我认为郝斌真的是在全网C语言学习课程中讲的最全面,到位的一个,这个不是真不是博主我吹他哈,大家可以去B站去看看,C ...
- 大一C语言学习笔记(2)---快捷键篇
大家好,博主呢,是一位刚刚步入大一的软件工程专业的大学生,之所以写博客,是想要与同样刚刚接触程序员一行的朋友们一起讨论,进步,在这里记录我的一些学习笔记及心得,希望通过这些点点滴滴的努力,可以让我们离 ...
- python的学习笔记01_3 基本运算符 流程控制if while 字符串常用办法
基本运算符 运算符 计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算,今天我们暂只学习算数运算.比较运算.逻辑运 ...
- Java学习笔记之:Java流程控制
一.介绍 Java流程控制包括顺序控制.条件控制和循环控制. 顺序控制,就是从头到尾依次执行每条语句操作.条件控制,基于条件选择执行语句,比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操 ...
- 《Go学习笔记 . 雨痕》流程控制(if、switch、for range、goto、continue、break)
Go 精简(合并)了流控制语句,虽然某些时候不够便捷,但够用. if...else... 条件表达式值必须是布尔类型,可省略括号,且左花括号不能另起一行. func main() { x := 3 i ...
- Lua学习笔记(2): 流程控制与循环以及初涉迭代器
条件判断语句 --if...语句 if (表达式) then --表达式为1时执行的语句 end --if...else语句 if (表达式) then --表达式为1时执行的语句 else --表达 ...
- 大一C语言学习笔记(4)---自省篇
博主"曾经"做过的傻事: #你有的*没打全 #你用/的时候没考虑()是一对的 #printf随后加\n #所有变量只要用,就一定要定义数据类型 #sqrt()代表根号 #inclu ...
随机推荐
- 鸿蒙内核源码分析(系统调用篇) | 开发者永远的口头禅 | 百篇博客分析OpenHarmony源码 | v37.03
百篇博客系列篇.本篇为: v37.xx 鸿蒙内核源码分析(系统调用篇) | 开发者永远的口头禅 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调度谁 ...
- P5494-[模板]线段树分裂
正题 题目链接:https://www.luogu.com.cn/problem/P5494 题目大意 给出一个可重集合要求支持 将集合\(p\)中在\([l,r]\)的数放到一个新的集合中 将集合\ ...
- P6672-[清华集训2016]你的生命已如风中残烛【结论】
正题 题目链接:https://www.luogu.com.cn/problem/P6672 题目大意 长度为\(m\)的序列\(a\),有\(n\)个数字不是\(0\),其他\(m-n\)个是\(0 ...
- 华为云计算IE面试笔记-其它知识点
* 虚拟化与云计算的区别?云计算和虚拟化关系?华为云计算怎么做的? 虚拟化是一种具体的技术,实现的是对硬件资源的虚拟化,提升资源利用率,降低能耗,云计算是一种概念各种技术组件的集合,针对的是对各种资源 ...
- Fiddler抓HTTPS接口数据,安装证书并不复杂,超详细的图文解说,不信你看!
@ 目录 前言 安装环境 配置网络 IP 端口 配置网络 浏览器打开下载链接 下载证书 安装证书 证书安装坑 前言 抓包是我测试工作中必须要学会的一个工具,我们都知道,抓取HTTPS接口里需要安装证书 ...
- 更准确的测试Java程序性能——JMH基准测试
什么是JMH JMH,即Java Microbenchmark Harness,Java平台下的一套微基准测试工具.如果我们需要测试API性能的话,就可以用上这个工具,所以它并不是取代单元测试的. ...
- 用Flask 实现文件服务器(包含docker版本)
最近有了公司局域网内共享axure原型的需求,所以用Flask开发了一款文件上传/查看工具,记录一下其中的问题和解决方案 这个工具参照了一位大神的uploads工具 https://zhuanlan. ...
- 简单Tab切换
延迟Tab切换,使用css中的flex布局,原生js实现.(京东首页菜单也有此延迟功能哦!) 每天进步一丢丢~~ 1.延迟Tab切换 <!DOCTYPE html> <html la ...
- VulnHub 实战靶场Breach-1.0
相比于CTF题目,Vulnhub的靶场更贴近于实际一些,而且更加综合考察了知识.在这里记录以下打这个靶场的过程和心得. 测试环境 Kali linux IP:192.168.110.128 Breac ...
- Serverless 的价值
作者 | 许晓斌 阿里云高级技术专家 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复 入门 ,即可获取 Serverless ...