大家好,欢迎来到IT知识分享网。
第一行代码,数据存储,数据类型和变量
1.第一行代码
1.1 C 语言第一行代码
// C 语言标准输入输出库头文件,最基本的 C 语言头文件 #include <stdio.h> // main 函数是整个程序的入口 int main(int argc, int argv[]) { /* 在控制台打印展示 hello world %s 是 C 语言打印使用的标记类型,对应的字符串 */ printf("%s\n", "Hello World!"); return 0; }
1.2 编译执行 C 语言代码
需要使用编译工具是 GCC,编译格式
gmy@gmy:~/CODE/day2$ gcc 01_C语言第一行代码.c # 整体格式可以总结为 gcc 目标C语言文件.c # 得到的最终可执行文件是一个 a.out,默认的文件名和类型, .out在Linux 系统中是终端可执行文件,类似于 Windows 操作系统的 exe 文件执行 a.out 终端可执行文件
gmy@gmy:~/CODE/day2$ ./a.out # ./ 表示当前工作目录的文件, . 表示当前工作目录 / 是路径分隔符 # a.out 是可执行文件 # 执行结果 Hello World!
1.3 第一行代码需要注意的内容
- 注意标点符号一定是英文符号/半角符号
- 成双成对的标点符号一次完成,不要后续补充。仅有一下标点符号:
“”, ‘’ , <> , [] , {} , ()
- 注意拼写问题,注意代码颜色,如果颜色不对劲,就是有问题。
- 注意代码格式,缩进对齐,必须提供必要的空格空行
2. 数据类型
2.1 计算机数据存储单位
计算机最小存储单位字节(byte), 一个字节对应 8 个比特位 (bit) 二进制位
存储单位的进制关系 1024 算术进制 1024 Byte ==> 1 KB 1024 KB ==> 1 MB 1024 MB ==> 1 GB 1024 GB ==> 1 TB 生产过程中使用进制是 1000 【了解】
2.2 数据进制
开发中常用的数据进制有十进制 二进制 八进制 十六进制
| 进制 | 进制基数 | 禁止要求 |
|---|---|---|
| 十进制 | 0 ~ 9 | 逢 10 进 1 |
| 二进制 | 0,1 | 逢 2 进 1 |
| 八进制 | 0 ~ 7 | 逢 8 进 1 |
| 十六进制 | 0 ~ 9,A ~ F | 逢 G (16)进 1 |
【了解】进制数据转换过程和数据展示形式
数据展示形式
十六进制数据展示要求, 0x 开头,或者 0X 开头 例如: 0xABCD 0xabcd 0xff11 0x11FF 十六进制不区分大小写 八进制数据展示要求,要求 0 开头,但是 0 可以省略 例如: 0777 0775 0555 二进制数据案例 0111 0110(2)
数据转换过程
- 熟练掌握计算机使用
0x11FF ABCD 十六进制 十进制 301,968,333 八进制 2 177 725 715 二进制 0001 0001 1111 1111 1010 1011 1100 1101
12345 八进制 十六进制 14E5 十进制 5,349 二进制 0001 0100 1110 0101
3. 常量和数据类型推演
3.1 生活中常量数据
整数,浮点数,字符,字符串
数值: 10 20 30 -10 -20 -30 ==> 整数 3.14 6.18 ==> 小数/浮点数 文字:字符常量使用英文单引号包含,并且 C/C++ 不推荐使用单引号包含中文内容 '中' '好' 中文汉字 'A' 'B' 'C' 英文字母 '1' '2' '3' 数字字符 文本: ===> 字符串 字符串常量使用英文双引号包含,双引号内部的所有内容都是字符串内容 "北国风光,千里冰封,万里雪飘..."
3.2 常量案例代码
#include <stdio.h> int main(int argc, char *argv[]) { // 整数常量演示 printf("整数:%d\n", 10); printf("整数:%d\n", 3); printf("整数:%d\n", 1024); // 浮点数常量演示 printf("浮点数:%f\n", 3.14); printf("浮点数:%f\n", 6.18); printf("浮点数:%f\n", 10.13); // 字符常量演示,字符要求使用英文单引号包含的内容,C/C++ 不推荐包含中文 printf("字符:%c\n", 'A'); printf("字符:%c\n", '1'); // 中文汉字占用字节都是 2 ~ 3 字节,字符常量无法保存完整的中文汉字,有警告 printf("字符:%c\n", '我'); // 有乱码 //字符串常量 printf("%s\n", "北国风光,千里冰封···"); printf("%s\n", "晋太元中,武陵人捕鱼为业···"); return 0; }
3.3 字符特殊补充
3.3.1 字符和编码集
任何一个字符对于计算机而言都是一个【图片】,在计算机中使用一个表格,对每个图标进行编号处理,在使用字符数据过程中,计算机会根据对应的编号,选择对应的字符内容进行展示。
嵌入式开发中,常用的编码集 ASCII:美国信息标准化交互协会指定的编码集,包括所有的英文字符,标点符号和特殊字符串,同时要求任何一个国际流行的编码集,前 0 ~ 255 位置必须是 ASCII。 GBK:中国国标,包括中文简体字,全部少数民族文字。 UTF-8:万国码,包括中文简体字和其他国家文字。 BTG5:中国繁体字编码集,主要适用于中国香港,中国澳门,中国台湾省
ASCII 重点知识点
- 0 ~ 31 编码对应的字符是不可见字符,功能按键,例如 ESC,重点 nul 编码为 0 的字符
- 英文大写字母的编码值是小于小写英文字母
- 大写英文字母和小写英文字母之间非连续,中间有其他字符
- 数字字符顺序为 ‘0’ ~ ‘9’
- 开发中使用字符常量,请使用字符本身,不允许使用编码值
3.3.2 转义字符【了解】
将无意义字符,转换为特定含义字符 \n 回车 \t 制表符/tab \a 蜂鸣器 特定含义字符,转换无意义字符 \" 需要一个 " 字符 \' 需要一个 ’ 字符 \\ 需要一个 \ 字符
3.3.3 一个来自 2015 年的面试题
请问 \40 是什么??? 1. \ 是一个转义字符标记 2. \ 之后要求的数据可以是八进制数据 3. 八进制数据可以省略标记 0 \40 ==> 八进制对应 040 字符 ==> sp 空格 【重点知识】 '\0' 表示编码集当中编号为 0 字符,为不可见字符,字符标记为 nul
3.4 数据类型【重点】
开发中,根据当前数据情况,分门类别处理,选择不同的数据类型,更好管理操作数据,通过常量角度分析得到有以下数据类型
- 整数 short int long
- 浮点数 float double
- 字符串【特殊类型】
整数:一般用于存储整数相关数据内容,支持负数和正数,同时可以选择当前数据非负数
| 数据类型 | 占用内存空间字节数 | 数据范围 |
|---|---|---|
| short | 2字节(16bit) | -32768 ~ 32767 0 ~ 65535 |
| int | 4字节(32bit) | -2^31 ~ 2^31 – 1 2^32 – 1 |
| long | 8字节(64bit) | -2^63 ~ 2^63 – 1 2^64 – 1 |
int 类型占用内存字节数补充
- 在 32 位机器及其以上占用内存空间字节数是 4 字节
- 16位机器对应 2 个字节,8 位机器对应 1 个字节
long 类型占用内存字节数补充
- 在 64 位机器及其以上占用内存空间字节数是 8 字节
- 32 位机器对应 4 个字节
浮点数:用于存储小数数据,存在单精度和双精度情况,主要区别是数据存储范围和数据存储精度
| 数据类型 | 占用内存空间字节数 | 数据范围 |
|---|---|---|
| float | 4字节(32bit) | ± 10 ^ 38 |
| double | 8字节(64bit) | ± 10 ^ 308 |
float 单精度浮点类型 和 double 双精度浮点类型
- float 数据存储范围小于 double
- float 数据精度没有 double 高
- 浮点数据精度情况在特定情况下无法满足开发需求,可能需要其他类型支持
字符类型:用于存储字符数据,但是对于中文的支持不友好
| 数据类型 | 占用内存空间字节数 | 数据范围 |
|---|---|---|
| char | 1字节(8bit) | 对应 ASCII 数据范围 |
4. 变量【重点】
4.1 C/C++ 变量定义形式
数据类型 变量名 = 初始化数据 【注意】 开发要求,一行仅定义一个变量,并且进行初始化操作 数据类型: 1. 要求见名知意,推荐: 小驼峰命名法 studentName studentScore 下划线命名法 student_name student_score 2. 变量名在一定范围内唯一 3. 变量名是操作当前变量的关键名称 =: 赋值号,将赋值号右侧的数据,赋值给左侧的变量 右侧要求必须是一个变量,不可以是其他内容 初始化数据: 根据数据类型,目前的代码所需情况,原则合理合适的数据对当前变量进行初始化操作。
4.2 变量定义案例
4.2.1 整型案例
#include <stdio.h> int main(int argc, char *argv[]) { /* 变量定义格式: 数据类型 变量名 = 初始化数据; */ // 当前定义的变量,变量数据类型为 short 类型,变量名为 num1 // 存储类型为 10 short num1 = 10; // 变量数据类型为 int 类型,变量名为 num3 // 存储数据为 200 int num2 = 200; //变量数据类型为 long 类型,变量名为 num3 // 存储数据为 1000 long num3 = 1000; printf("num1 = %d\n", num1); printf("num2 = %d\n", num2); printf("num3 = %d\n", num3); short num5 = 10000; print("num5 = %d\n", num5); // 03_整型变量定义案例.c:36:15: warning: overflow in implicit constant conversion [-Woverflow] // short num5 = ;i // 超出了 short 类型支持的数据范围 return 0; }
4.2.2 浮点类型案例
#include <stdio.h> int main(int argc, char *argv[]) { // 数据类型 变量名 = 初始化数据; /* 定义一个 float 类型变量,变量名为 num1 初始化数据赋值为 3.14 【建议】 3.14 常量之后使用大写 F 明确告知编译器 当前 3.14 是一个 float 类型数据,默认情况下, 计算机为了保证数据的精度范围,所有的浮点数 常量默认数据类型为 double 类型 【严格遵守数据类型一致化原则】 */ float num1 = 3.14F; // 定义了一个 double 类型变量,变量名为 num2 // 初始化数据赋值为 3.14 double num2 = 3.14; printf("num1 = %f\n", num1); printf("num2 = %f\n", num2); return 0; }
4.2.3 字符类型案例
#include <stdio.h> int main(int argc, char *argv[]) { //数据类型 变量名 = 初始化数据; // 使用字符常量给予字符变量进行赋值操作,需要使用字符本身 //不推荐使用编码值 char ch1 = 'A'; char ch2 = '1'; char ch3 = '中'; printf("ch1 = %c\n", ch1); printf("ch2 = %c\n", ch2); printf("ch3 = %c\n", ch3); return 0; }
4.3 变量定义常见错误/问题总结
4.3.1 常量数据使用建议
- 使用常量给予 float 类型变量赋值操作,建议采用大写 F 作为常量的结尾修饰
- 使用常量给予 long 类型变量赋值操作,建议采用大写 L 作为常量的结尾修饰
float num1 = 3.5F; // 明确告知计算机,当前 3.5 是一个 float 类型 long num2 = 1000L; // 明确告知计算机,当前 1000 是一个 long 类型 // 原则: 严格遵守数据类型一致化
4.3.2 变量未定义直接使用【常见】
- 变量已定义,但是在后续的使用过程中,因为拼写错误导致的变量未定义。
- 变量在使用之前尚未定义,从始至终未定义对应变量
4.3.3 野值问题【重点,一定要避免】
要求变量在定义之后,如果尚未赋值的情况下,不建议参与除赋值之外的其他操作。因为变量存储的数据内容尚未明确,C/C++ 中对应变量的数据称之为【野值】,无法确定数值。
建议变量定义操作时,直接进行必要的初始化操作,防止野值出现
4.3.4 重复定义问题【常见】
变量在一定范围内唯一,不可以重复定义,否则计算机无法对变量名称进行识别。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/120288.html









