C 学习(5)

news2024/11/25 4:58:01

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

基本语法 - 《阮一峰《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.coloradmin.cn/o/2234447.html

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

相关文章

redis7学习笔记

文章目录 1. 简介1.1 功能介绍1.1.1 分布式缓存1.1.2 内存存储和持久化(RDBAOF)1.1.3 高可用架构搭配1.1.4 缓存穿透、击穿、雪崩1.1.5 分布式锁1.1.6 队列 1.2 数据类型StringListHashSetZSetGEOHyperLogLogBitmapBitfieldStream 2. 命令2.1 通用命令copydeldumpexistsexpire …

【设计模式系列】建造者模式(十)

目录 一、什么是建造者模式 二、建造者模式的角色 三、建造者模式的典型应用 四、建造者模式在StringBuilder中的应用 五、典型建造者模式的案例 一、什么是建造者模式 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;用于构建复杂对…

用vite创建项目

一. vite vue2 1. 全局安装 create-vite npm install -g create-vite 2. 创建项目 进入你想要创建项目的文件夹下 打开 CMD 用 JavaScript create-vite my-vue2-project --template vue 若用 TypeScript 则 create-vite my-vue2-project --template vue-ts 这里的 …

JVM结构图

JVM&#xff08;Java虚拟机&#xff09;是Java编程语言的核心组件之一&#xff0c;负责将Java字节码翻译成机器码并执行。JVM由多个子系统组成&#xff0c;包括类加载子系统、运行时数据区、执行引擎、Java本地接口和本地方法库。 类加载子系统&#xff08;Class Loading Subsy…

WordPress伪静态设置

为什么要设置WordPress伪静态&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;中&#xff0c;静态URL通常被认为更易于搜索引擎爬虫抓取和索引&#xff0c;有助于提高网站的搜索引擎排名。 WordPress伪静态设置方法主要依赖于服务器环境&#xff0c;以下是针对不同服务器…

【黑盒测试】等价类划分法及实例

本文主要介绍黑盒测试之等价类划分法&#xff0c;如什么是等价类划分法&#xff0c;以及如何划分&#xff0c;设计等价类表。以及关于三角形案例的等价类划分法。 文章目录 一、什么是等价类划分法 二、划分等价类和列出等价类表 三、确定等价类的原则 四、建立等价类表 …

宠物领养救助管理软件有哪些功能 佳易王宠物领养救助管理系统使用操作教程

一、概述 佳易王宠物领养救助管理系统V16.0&#xff0c;集宠物信息登记、查询&#xff0c;宠物领养登记、查询&#xff0c; 宠物领养预约管理、货品进出库库存管理于一体的综合管理系统软件。 概述&#xff1a; 佳易王宠物领养救助管理系统V16.0&#xff0c;集宠物信息登记…

RK3568开发板静态IP地址配置

1. 连接SSH MYD-LR3568 开发板设置了静态 eth0:1 192.168.0.10 和 eth1:1 192.168.1.10&#xff0c;在没有串口时调试开发板&#xff0c;可以用工具 SSH 登陆到开发板。 首先需要用一根网线直连电脑和开发板&#xff0c;或者通过路由器连接到开发板&#xff0c;将电脑 IP 手动设…

Flutter错误: uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared

前言 今天要做蓝牙通信的功能&#xff0c;我使用了flutter_reactive_ble这个库&#xff0c;但是在运行的时候发现一下错误 Launching lib/main.dart on AQM AL10 in debug mode... /Users/macbook/Desktop/test/flutter/my_app/android/app/src/debug/AndroidManifest.xml Err…

【含开题报告+文档+源码】基于Java的房屋租赁服务系统设计与实现

开题报告 随着城市化进程的加速和人口流动性的增加&#xff0c;租房需求不断增长。传统的租赁方式往往存在信息不对称、流程不规范等问题&#xff0c;使得租户和房东的租赁体验不佳。而而房屋租赁系统能够提供便捷、高效的租赁服务&#xff0c;满足租户和房东的需求。房屋租赁…

斯托克斯矢量,表示电磁波的(不是散射体)平均后,可分解为完全极化电磁波和噪声

可见完全极化分就表示只有一种&#xff0c;在T矩阵中是只有一种散射体&#xff0c;在电磁波协方差矩阵中是只有一种电磁波

微服务day03

导入黑马商城项目 创建Mysql服务 由于已有相关项目则要关闭DockerComponent中的已开启的项目 [rootserver02 ~]# docker compose down WARN[0000] /root/docker-compose.yml: version is obsolete [] Running 4/4✔ Container nginx Removed …

大腾智能荣获盐田区黄金珠宝产业“产业赋能数字化优选能力伙伴”荣誉

11月2日&#xff0c;盐田区黄金珠宝产业数智化转型促进中心&#xff08;简称“促进中心”&#xff09;揭牌仪式圆满举办。盐田区委书记李忠&#xff0c;市工业和信息化局、市市场监督管理局、华为技术有限公司等相关单位、企业负责人共同见证促进中心揭牌启动。 大腾智能也出席…

10天进阶webpack---(2)webpack模块兼容性处理

回顾CMJ和ESM的区别 CMJ的本质可以使用一个函数概括 // require函数的伪代码 function require(path){if(该模块有缓存吗){return 缓存结果;}function _run(exports, require, module, __filename, __dirname){// 模块代码会放到这里}var module {exports: {}}_run.call(mod…

034_Structural_Transient_In_Matlab结构动力学问题求解

结构动态问题 问题描述 我们试着给前面已经做过的问题上加一点有趣的东西。 结构静力学求解 当时求解这个问题&#xff0c;在最外面的竖直切面加载了一个静态的固定的力。下面我们试试看在上方的表面增加一个脉冲压力载荷。 采用统一的有限元框架&#xff0c;定义问题&…

简单的 docker 部署ELK

简单的 docker 部署ELK 这是我的运维同事部署ELK的文档&#xff0c;我这里记录转载一下 服务规划 架构: Filebeat->kafka->logstash->ES kafka集群部署参照: kafka集群部署 部署服务程序路径/数据目录端口配置文件elasticsearch/data/elasticsearch9200/data/elas…

TortoiseSVN小乌龟下载安装(Windows11)

目录 TortoiseSVN 1.14.7工具下载安装 TortoiseSVN 1.14.7 工具 系统&#xff1a;Windows 11 下载 官网&#xff1a;https://tortoisesvn.subversion.org.cn/downloads.html如图选 TortoiseSVN 1.14.7 - 64 位 下载完成 安装 打开 next&#xff0c;next Browse&#xf…

Python实例:爱心代码

前言 在编程的奇妙世界里,代码不仅仅是冰冷的指令集合,它还可以成为表达情感、传递温暖的独特方式。今天,我们将一同探索用 Python 语言绘制爱心的神奇之旅。 爱心,这个象征着爱与温暖的符号,一直以来都在人类的情感世界中占据着特殊的地位。而通过 Python 的强大功能,…

ENSP RIP动态路由

RIP&#xff08;距离矢量路由协议&#xff09;以网络中所有链路的距离和矢量为依据计算最佳路径&#xff0c;是第一个动态路由协议。条数作为唯一的度量单位。默认开启水平分割&#xff08;从一个路由接口学到的路由信息&#xff0c;便不在从这个接口发送出去&#xff09;防止路…

Qt 练习做一个登录界面

练习做一个登录界面 效果 UI图 UI代码 <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Dialog</class><widget class"QDialog" name"Dialog"><property name"ge…