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,即数值范围为

有时候,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;
相关推荐
wangjing_05225 分钟前
C语言练习.if.else语句.strstr
c语言·开发语言
时光の尘3 小时前
C语言菜鸟入门·关键字·int的用法
c语言·开发语言·数据结构·c++·单片机·链表·c
C++忠实粉丝3 小时前
计算机网络socket编程(6)_TCP实网络编程现 Command_server
网络·c++·网络协议·tcp/ip·计算机网络·算法
Edward-tan3 小时前
c语言数据结构与算法--简单实现线性表(顺序表+链表)的插入与删除
c语言·开发语言·链表
武昌库里写JAVA3 小时前
一文读懂Redis6的--bigkeys选项源码以及redis-bigkey-online项目介绍
c语言·开发语言·数据结构·算法·二维数组
禊月初三3 小时前
LeetCode 4.寻找两个中序数组的中位数
c++·算法·leetcode
程序员与背包客_CoderZ4 小时前
C++设计模式——Abstract Factory Pattern抽象工厂模式
c语言·开发语言·c++·设计模式·抽象工厂模式
fancc椰5 小时前
C++基础入门篇
开发语言·c++
晚安,cheems5 小时前
c++(入门)
开发语言·c++
Mcworld8576 小时前
C语言:strcpy
c语言·开发语言