C 学习(5)

哈哈哈哈哈,终于想起来了!贴一下主要的参考:

基本语法 - 《阮一峰《C 语言教程》》 - 书栈网 · BookStack

内容写的比较浅显有疏漏,如果看不明白,再结合一下百度。

注释

C 语言的注释有两种表示方法。

第一种方法是将注释放在/*...*/之间,可以一行,也可以在内部分行。

/* 注释一行 *//*注释分行
*/

灵活的运用方式----------在文件头部进行文件的版权或者功能解说:

/*****************************************\
|* Copyright (c) 2024 by 777             *|
|* All Rights Reserved.                  *|
|*                                       *|
\*****************************************/

第二种写法是将注释放在双斜杠//后面,从双斜杠到行尾都属于注释。这种注释只能是单行,可以放在行首,也可以放在一行语句的结尾。

可以放在代码块的上一行进行代码作用的解释,或者临时注释掉不用的代码行,进行后续debug .

     if (0 == r && 0 == b)

C 语言中 进行比较的表达式,称为“关系表达式”,里面使用的运算符就称为“关系运算符”,主要有下面6个。

  1. > 大于运算符  a > b;
  2. < 小于运算符  a < b;
  3. >= 大于等于运算符  a >= b;
  4. <= 小于等于运算符  a <= b;
  5. == 相等运算符  a == b;
  6. != 不相等运算符  a != b;

关系表达式通常返回01,表示真伪。

C 语言中,0表示伪,所有非零值表示真。比如,20 > 12返回112 > 20返回0

关系表达式常用于ifwhile结构。比如:

  1. if (x == 3) {
  2. printf("x is 3.\n");
  3. }

注意,相等运算符 == 与赋值运算符 是两个不一样的运算符。如果不小心写出下面的代码,它可以运行,但很容易出现意料之外的结果。

  1. if (x = 3) ...

上面示例中,原意是x == 3,但是不小心写成x = 3。这个式子表示对变量x赋值3,它的返回值为3,所以if判断总是为真。

为了防止出现这种错误,有的程序员喜欢将变量写在等号的右边。

  1. if (3 == x) ...

这样的话,如果把==误写成=,编译器就会报错。

  1. /* 报错 */
  2. if (3 = x) ...

switch

     switch 语句用于判断条件有多个结果的情况。

  1. switch (expression) {
  2. case value1: statement
  3. case value2: statement
  4. default: statement
  5. }

上面代码中,根据表达式data->bitwidth不同的值,执行相应的case分支。如果找不到对应的值,就执行default分支。

每个case语句体的结尾,都应该有一个break语句,作用是跳出整个switch结构,不再往下执行。如果缺少break,就会导致继续执行下一个casedefault分支。

  1. switch (grade) {
  2. case 0:
  3. printf("False");
  4. case 1:
  5. printf("True");
  6. break;
  7. default:
  8. printf("Illegal");
  9. }

上面示例中,case 0的部分没有break语句,导致这个分支执行完以后,不会跳出switch结构,继续执行case 1分支。

利用这个特点,如果多个case分支对应同样的执行语句体,可以写成下面这样。

  1. switch (grade) {
  2. case 0:
  3. case 1:
  4. printf("True");
  5. break;
  6. default:
  7. printf("Illegal");
  8. }

上面示例中,case 0分支没有任何语句,导致case 0case 1都会执行同样的语句体。

case后面的语句体,如果比较复杂,建议(但不必须)放在大括号里面。这也是为什么需要break跳出switch的原因

default 分支是可选的,用来处理前面的 case 都不匹配的情况,最好放在所有 case 的后面。如果没有该分支,遇到所有的 case 都不匹配的情况,就会直接跳出整个 switch 代码块。

while 和 do ... while

实际中用的少,更多用的是  for 循环 ,比如 for (uint8_t i = 10; i < 40; i++)

while语句用于循环结构,满足条件时,不断执行循环体。

  1. while (expression)
  2. statement

do...while结构是while的变体,它会先执行一次循环体,然后再判断是否满足条件。如果满足的话,就继续执行循环体,否则跳出循环。

  1. do statement
  2. while (expression);

continue 语句

continue 关键字在 C 语言中用于跳过当前循环中的剩余代码,并立即开始下一次迭代。

 

详细可以参考:【C语言】continue 关键字详解_c语言continue-CSDN博客

char

C 语言中基本数据类型有三种:字符(char)、整数(int)和浮点数(float)

  1. char c = 'B';

上面示例声明了变量c是字符类型,并将其赋值为字母B。字符常量必须放在单引号 ''里面。

字符数组
  字符数组是一个可以存储多个字符的连续内存区域。这些字符可以是文本字符串的一部分,或者用于其他目的。字符数组在声明时指定了大小(即可以存储的字符数),并在栈上分配内存。

示例:

  1. char str[10];                   // 声明一个可以存储最多9个字符和1个空字符('\0')的字符数组
  2. strcpy(str, "Hello");        // 使用strcpy函数将字符串"Hello"复制到str数组中

在上面的示例中,str是一个字符数组,它可以存储最多10个字符。我们使用strcpy函数将一个字符串复制到这个数组中。

声明时,如果预先知道字符数组的长度,那么可以在声明时将长度值写在中括号中;如果声明时并不知道该字符数组的数据长度,那么则可用不预先声明字符数组长度,即将中括号置空。

字符数组变量的赋值形式也有两种:

  1. 用花括号扩起来的字符数组赋值,必须注意用结束符\0作为字符数组的最后一个字符

  2. 使用双引号扩起来的字符串赋值。

char arr[]  = "abc";

char arr2 [4] = {'a', 'b', 'c', '\0' };

char arr[3][10] = {"hello", "world", "c"};

float minD = 65535.0f;

将整数65535赋值给浮点变量minD.

浮点型是基本数据类型之一,用于定义实数(小数)变量。

float(单精度浮点数)类型占用4个字节(32位),其中8位存放指数的值和符号,剩下24位存放小数的值和符号。float类型至少能够提供(十进制的)6位有效数字,指数部分的范围为(十进制的)-3737,即数值范围为10^{-37}10^{37}

有时候,32位浮点数提供的精度或者数值范围还不够,C 语言又提供了另外两种更大的浮点数类型。

  • double:占用8个字节(64位),至少提供13位有效数字。-----(双精度浮点数)
  • long double:通常占用16个字节。

举例:

float f = 1.23f; // 定义单精度浮点型变量f,值为1.23,

double d = 1.23; // 定义双精度浮点型变量d,值为1.23,

解释:在C语言中浮点数常量模式是 double类型的。如果需要直接使用float 型的浮点数,需要在常数后面加后缀f。

如果是声明变量,则在赋值时不必要加f 后缀。

bool值,true or false

头文件stdbool.h定义了另一个类型别名bool,并且定义了true代表1false代表0。只要加载这个头文件,就可以使用这几个关键字。

  1. #include <stdbool.h>
  2. bool flag = false;

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

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

相关文章

解读《ARM Cortex-M3 与Cortex-M4 权威指南》——第3章 技术综述

加载—存储架构 ISA(指令集架构) 指令集架构 (ISA) 是计算机处理器能够理解和执行的指令集合。它定义了计算机系统中硬件和软件之间的接口 ISA 是硬件与软件之间的接口规范,它定义了处理器能执行哪些操作,程序员和编译器可以依此编写代码。 常见的 ISA 类型: CISC (Comp…

【Linux】linux c语言调用send()接口内核调用流程

1、C语言测试代码&#xff1a; #include <errno.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <err.h> #include <sys/types.h> #include <sys/socket.h> #include <net…

【Windows修改Docker Desktop(WSL2)内存分配大小】

记录一下遇到使用Docker Desktop占用内存居高不下的问题 自从使用了Docker Desktop&#xff0c;电脑基本每天都需要重启&#xff0c;内存完全不够用&#xff0c;从16g扩展到24&#xff0c;然后到40G&#xff0c;还是不够用&#xff1b;打开Docker Desktop 运行时间一长&#x…

使用 ABAP GIT 发生 IF_APACK_MANIFEST dump

错误重现 使用经典的 ABAP 系统运行 ZABAPGIT 或者 ZABAPGIT_STANDALONE然后添加在线或者离线项目点击 PullShort dump SYNTAX_ERROR Dump 界面&#xff1a; 解决方案 它发生在 CREATE OBJECT lo_manifest_provider TYPE (ls_manifest_implementation-clsname) 语句中。 该语…

树莓派基本设置--8.播放音频和视频

在Raspberry Pi上播放音频和视频的最简单方法是使用预装的VLC应用程序&#xff1b; VLC程序使用硬件加速&#xff0c;可以播放许多流行的音频和视频文件格式。 一、图形化界面 选择要播放的文件&#xff0c;鼠标右击&#xff0c;选择“VLC Media Player” 二、命令行 注意&…

JS实现原生注册表单,滑块验证,短信验证码

目录 一、编辑表单询盘结构 1、确定注册接口所需参数 2、编写表单HTML结构 二、编写style样式 1、非表单元素样式 三、引入阿里云滑块验证 1、引入阿里短信接口CDN 2、实例化nc对象 四、调用短信验证码接口 1、给获取按钮绑定点击事件 2、测试短信验证码获取 五、调用注册接口 …

matlab 质心重合法实现点云配准

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示1、初始位置2、配准结果本文由CSDN点云侠原创,原文链接,首发于:2024年11月5日。 一、算法原理 1、原理概述 质心重合法是将源点云 P P P

YOLOv8实战人脸口罩识别

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对人脸口罩数据集进行训练和优化&#xff0c;该数据集包含丰富的人脸口罩图像样本…

科研绘图系列:R语言两侧柱状图(Grouped Bar Chart)

文章目录 介绍加载R包数据画图1画图2组合图形系统信息介绍 两侧柱状图(也称为双柱状图或并列柱状图)是一种数据可视化图表,它通过在坐标轴的两侧绘制两组或多组柱状图来展示不同类别或组别的数据对比。这种图表特别适用于比较两个或多个数据系列之间的差异。以下是两侧柱状…

获取订单物流信息:追踪包裹的“侦探游戏”

在电商的世界里&#xff0c;顾客下单之后&#xff0c;最让人心急如焚的莫过于等待包裹的到来。想象一下&#xff0c;如果你是一名侦探&#xff0c;而你的任务是追踪那些神秘的包裹&#xff0c;那么获取订单物流信息的API就是你的侦探工具。今天&#xff0c;我们就来聊聊如何使用…

Kinematic-ICP开源:优化激光雷达与轮式里程计融合

文章目录 摘要一、介绍二、相关工作三、使用点对点ICP的激光雷达里程计四. 在ICP中引入运动学约束五. 实验评估A. 实验设置B. 大型室内仓库的定性结果C. 定量结果D. 消融实验 摘要 代码&#xff1a;github 原文&#xff1a;原文 摘要—LiDAR里程计对许多机器人应用至关重要&am…

最新Ubuntu超详细安装教程(附镜像包)

一、镜像下载&#xff1a; 官方正版VMware下载&#xff1a;https://pan.baidu.com/s/1yC610SU1-O9Jtk7nUrZuSA?pwdsKByvm17pro安装教程文档&#xff08;必看&#xff09;.txt 这个一定要下载下来看一下&#xff01;&#xff01;&#xff01; Ubuntu镜像下载&#xff1a;http…

归并排序算法

1、基本思想 归并排序是建立在归并操作上的一种有效的排序算法&#xff0c;它采用分治法的策略。其基本思想是将一个待排序的数组分成两个或多个子数组&#xff0c;先对每个子数组进行排序&#xff0c;然后再将已排序的子数组合并成一个最终的排序数组。 对于两个有序的数组&am…

记录解决vscode 登录leetcode中遇到的问题

1. 安装完 leetcode 点击sign in to leetcode 点击打开网站登录leetcode&#xff0c;发现网页无法打开。 解决办法&#xff1a;将leetcode.cn.js文件中的leetcode-cn.com路径都改成leetcode.cn 2. 继续点击 sign in to leetcode &#xff0c;选择使用账号登录&#xff0c;始…

机器人助力Bridge Champ游戏:1.4.2版本如何提升玩家体验

在Bridge Champ游戏中&#xff0c;机器人扮演着桥牌游戏的“无名英雄”角色&#xff0c;默默地提升玩家体验。凭借智能化的设计&#xff0c;这些机器人不仅能够陪练&#xff0c;也大大提升了比赛的流畅度与趣味性。 Bridge Champ是什么 Bridge Champ是一个基于Ignis公链的在线…

服装品牌零售业态融合中的创新发展:以开源 AI 智能名片 S2B2C 商城小程序为视角

摘要&#xff1a;本文以服装品牌零售业态融合为背景&#xff0c;探讨信息流优化和资金流创新的重要作用&#xff0c;并结合开源 AI 智能名片 S2B2C 商城小程序&#xff0c;分析其如何进一步推动服装品牌在零售领域的发展&#xff0c;提高运营效率和用户体验&#xff0c;实现商业…

redis:set集合命令,内部编码,使用场景

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言命令SADDSMEMBERSSISMEMBERSCARDSPOPSMOVESREM集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 内部编码使用场景总结 前言…

ssm052游戏攻略网站的设计与实现+vue(论文+源码)-kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;游戏攻略网站设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本游戏攻略网站就是在这…

Java基础-JDBC

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 一、JDBC简介 1.1 什么是JDBC 1.2 JDBC的作用 1.3 JDBC的架构 二、JDBC核心接口与类 2.1 DriverManag…

好好看 3.2.3 | 纯净无广告的四端追剧软件,高清秒播

好好看是一款全新的追剧软件&#xff0c;与网飞猫同一系列&#xff0c;纯净无广告&#xff0c;支持安卓、iOS、TV和PC四端。汇集了Netflix、电影、短剧、剧集、动漫、综艺等资源&#xff0c;并且各大平台资源同步更新。内置多条超清、蓝光、优质等线路&#xff0c;支持投屏、影…