C 语言 Day02

C 语言 Day02

回顾

1 运行环境搭建

mingw64 配置环境变量(path)
vscode 安装
vscode 扩展: 简体中文、c/c++

2 编写第一个程序

3 程序运行流程机制

编写代码  -> 预处理     ->   编译      ->    汇编       ->   链接        ->    运行
           .i 文件		 .s文件          .o 			  .exe 
      预处理之后的源文件      汇编文件         目标文件		  可执行文件

4 基本语法

1. 严格区分大小写
2. 指令以分号结尾
3. c 源文件扩展名是 .c

代码风格: 行尾风格 次行风格

5 注释

单行
多行
ctrl + /  快捷键

6 变量

1. 变量的声明和使用
   数据类型 变量名 变量值

2. 变量输出
  printf()  
  
3. 获取用户输入赋值给变量
  scanf()
  
4. 标识符规范
   强制规范: 由数字、字母、下划线组成; 不能以数字开头; 不能是关键字
   建议规范: 使用有意义的词; 多个词下划线分隔,小驼峰

7 常量

1. 常量分类
   字面量常量
   标识符常量
   
2. #define 定义标识符常量

3. const 定义标识符常量

4. 两种区别
   ① 执行时机
   ② 类型检查

第 5 章 二进制

5.1 进制

① 常见进制

十进制: 0 1 2 3 4 5 6 7 8 9 10 11 12 ... 19 20 21 ... 99 100 ...
二进制: 0 1 10 11 100 101 111 1000 ...
十六进制: 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 ... 1f 20 21 ... ff 100 ..

② 不同进制的表示

0b 开头是二进制
0x 开头是十六进制

③ 不同进制输出格式占位符

%d  十进制整数   (输出 输入)
%x  十六进制整数  (输出 输入)
%#x 0x开头的十六进制输出
%#X 0X开头的十六进制输出

5.2 进制转换

① 二进制和十进制

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
2^10 = 1024

二进制 -> 十进制
11001 = 16 + 8 + 1 = 25

十进制 -> 二进制
56 = 32 + 16 + 8 = 111000
85 = 64 + 16 + 4 + 1 = 1010101

② 十六进制和十进制

③ 二进制和十六进制

进制转换小练习:

108    
二进制   1101100  
十六进制 6c

0xab   
二进制 10101011  
十进制 171

5.3 原码、反码、补码

二进制形式存储数字原理

用 4 个二进制位表示无符号的整数:

0000	0
0001	1
0010	2
0011	3
0100	4
0101	5
0110	6
0111	7
1000	8
1001	9
1010	10
1011	11
1100	12
1101	13
1110	14
1111	15

用 4 个二进制位表示有符号的整数:

(补码)0000	0
(补码)0001	1
(补码)0010	2
(补码)0011	3
(补码)0100	4
(补码)0101	5
(补码)0110	6
(补码)0111	7
(补码)1000	-8        
(补码)1001	-7        
(补码)1010	-6
(补码)1011	-5
(补码)1100	-4
(补码)1101	-3
(补码)1110	-2
(补码)1111	-1
-7  1111(原码)  1000(反码)  1001(补码)
-6  1110(原码) 1001(反码) 1010(补码)

原码 反码 补码

原码: 最高位符号位 0是正数 1是负数   其他位就是对应的二进制
反码: 正数和0 与原码相同
      负数 原码基础上,符号位不变,其他位取反
补码: 正数和0 与原码 反码相同
      负数 反码基础上加1

补码计算器:https://www.lddgo.net/convert/number-binary-code

第 6 章 数据类型

6.1 整数类型

1. 整型分类
   short / unsigned short
   int / unsigned int
   long / unsigned long
   long long / unsigned long long
   
2. 字面量后缀(了解)
   默认是 int,  unsigned int 是 u、U
   long 的后缀 L、l, unsigned long 对应 ul lu UL
   long long 的后缀是 LL、ll unsigned long long 对应 ULL、ull
   
3. 占位符
   %hd -> short;  %hu -> unsigned short
   %d -> int; %u -> unsigned int
   %ld -> long; %lu  -> unsigned long
   %lld -> long long; %llu -> unsigned long long
   
4. 精确宽度整型
   int8_t、 int16_t、 int32_t ...
   uint8_t、 uint16_t、 uint32_t ...

6.2 浮点类型

1. 浮点类型
   float、double、long double

2. 字面量后缀
   默认是double
   float 是 f、F
   long double 是 l、L
   
3. 占位符
   %f    输出:double、flot 输入:float
   %lf   输出输入:double
   %Lf   输入输出: long double

6.3 字符类型

本质上 1个字节 整数
ascii 码对字符编码,存储的就是整数

6.4 布尔类型

//3 种定义方式

//(1) 使用宏定义

#include <stdio.h>
#define BOOL int
#define TRUE 1
#define FALSE 0


int main()
{   
    // 定义布尔类型变量
    BOOL isOK = TRUE;       // int isOK = 1;
    BOOL isPass = FALSE;    // int isPass = 0;

    // 条件判断
    if (isOK)
    {
        printf("isOK 成立!");
    }

    // 条件判断
    if (isPass)
    {
        printf("isPass 成立!");   // 不会执行的
    }

    return 0;
}

//(2) 使用布尔变量
    
#include <stdio.h>

int main()
{   
    // 定义布尔类型变量
    _Bool isOK = 0;
    _Bool isPass = -10;   // 非0就是真

    // 条件判断
    if (isOK)
    {
        printf("isOK 成立!");
    }

    // 条件判断
    if (isPass)
    {
        printf("isPass 成立!");  
    }

    return 0;
}

//(3) 使用标准库

#include <stdio.h>
#include <stdbool.h>

int main()
{   
    // 定义布尔类型变量
    bool isOK = true;
    bool isPass = false;

    printf("isOK=%d, isPass=%d \n", isOK, isPass);   // 1   0

    // 条件判断
    if (isOK)
    {
        printf("isOK 成立!");
    }

    // 条件判断
    if (isPass)
    {
        printf("isPass 成立!");  
    }

    return 0;
}
posted @ 2025-12-05 22:32  Q&25  阅读(12)  评论(0)    收藏  举报