【00002】 📅 2026/7/24 23:09:17 二、C语言2.1基本数据类型1.C语言开发步骤1 vi编辑器1.使用vi打开软件vi filename.cvi编辑器三种模式底行模式默认其余模式可以ESC进入底行模式插入模式底行模式输入i、a、o均可进入插入模式命令模式底行模式输入: 进入命令模式:wq保存并且退出:w只保存不退出:q直接退出:q!不保存强制退出:wq!强制保存并且退出2. 点击i键进入插入模式3. 编写代码#include stdio.hint main(void){printf(Hello World!\n);return 0;}4. 点击ESC5. 输入:wq保存并且退出2gcc编译器1.编译C语言代码gcc filename.cgcc filename.c -o filename注意如果不指定生成二进制的程序名默认会生成a.out如果编译报错需要重新打开代码修改语法问题如果编译报警告最好打开代码修改告警问题2.gcc编译流程预处理处理和#号相关的代码#include头文件包含将头文件中的内容展开#define宏定义将宏定义完成替换#if #endif #else #elif #ifndef #ifdef条件编译gcc -E filename.c -o filename.i编译将C语言代码编译成汇编代码gcc -S filename.c -o filename.s汇编将汇编代码编译成二进制代码gcc -c filename.c -o filename.o链接将多个二进制代码链接为一个可执行程序gcc filename.c -o filename3运行代码./二进制程序名2.基础知识1程序如何在计算机中运行1. 编写C语言代码和编译好的二进制可执行程序都存放在外存中2. 当执行代码时会将外存中的二进制代码放入内存中执行与CPU交互实现对应功能3. 当代码执行结束后会将内存中二进制代码及其执行空间回收掉2计算机中数据量的单位1. 计算机中只有0、1二进制数据2. 1bit位3. 1byte字节 8bit4. 1kb 1024 bytes5. 1mb 1024 kb6. 1gb 1024 mb7. 1tb 1024 gb3进制转换1. 二进制0b逢二进一 0 12. 八进制0/0o逢八进一 0 1 2 3 4 5 6 73. 十进制逢十进一 0 1 2 3 4 5 6 7 8 94. 十六进制0x逢十六进一 0 1 2 3 4 5 6 7 8 9 a b c d e f5. 二进制、八进制、十六进制转十进制对应位 * 对应位的权值再求和6. 十进制转二进制、八进制、十六进制十进制数除以进制数得到的余数逆序排列7. 二进制转换为八进制二进制三位对应八进制1位8. 二进制转换为十六进制二进制四位对应十六进制1位3.基本数据类型数据类型数据对象的特性基本数据类型C语言中已经定义好的数据类型整数类型123浮点数类型小数类型/实数类型 3.14字符型A !逻辑类型true false缺省类型void构造数据类型需要用户自己定义的数据类型1整数类型1.short短整型占2个字节singed short默认signed short类型最左边的1bit表示符号位0为正、1为负其余位表示数据位数据位按照补码存放负数补码原码-反码1signed short类型表示范围-32768 -- 32767unsigned shortunsigned short类型所有字节空间均存储数据位unsiged short类型表示范围 0 -- 655352.int整型占4个字节singed int默认signed int类型最左边的1bit表示符号位0为正、1为负其余位表示数据位数据位按照补码存放signed int类型表示范围-21亿 -- 21亿unsigned intunsigned int类型所有字节空间均存储数据位unsiged int类型表示范围 0 -- 42亿3.long长整型占8个字节singed long默认signed long类型最左边的1bit表示符号位0为正、1为负其余位表示数据位数据位按照补码存放signed long类型表示范围-2^32 -- 2^32 -1unsigned longunsigned long类型所有字节空间均存储数据位unsiged long类型表示范围 0 -- 2^64 -12浮点数类型1.float单精度浮点数类型占4个字节所有的float类型均为有符号1位符号位 8指数位 23尾数位float类型 6-8位有效数字2.double双精度浮点数类型占8个字节所有的double类型均为有符号1位符号位 11指数位 52尾数位double类型12-16位有效数字3字符型char该类型主要用于表示存储字符类型占1个字节singed char默认signed char类型最左边的1bit表示符号位0为正、1为负其余位表示数据位数据位按照补码存放signed char类型表示范围-128 -- 127unsigned charunsigned char类型所有字节空间均存储数据位unsiged char类型表示范围 0 -- 255ASCII码表规定字符和数字之间转换关系表示所有能够在屏幕上显示或者键盘输入的字符32号之前主要用于通信控制4波尔bool类型/逻辑类型bool类型的值域范围true1、false0C语言中非0值即为逻辑真值0值为逻辑假值5缺省void类型主要用于搭配函数传参、指针来使用4.常量和变量1常量1.整型常量默认为signed int类型-123100123U123u123UL123ul123l123L01230x1a0X1F2.浮点型常量默认为double类型5.1212.343.14f5.34F12.56e5-13.98e-1099.34E83.字符常量字符型常量必须加 只能写1个字符a;A;Z;!;~;;; ;0;1;9;\n;换行符光标移到下一行开头\a;响铃警报输出时终端蜂鸣\b;退格符光标向左回退一格\r;回车符光标回到本行最左侧\t;水平制表符横向跳格通常占 4/8 空格宽度\v;垂直制表符纵向换行跳行\\;反斜杠本身用来输出一个\\0;空终止符ASCII 0C 语言字符串结束标记\065;\x41;4.字符串常量字符串最末尾会有一个用来标识结尾的\0字符“a”是由a和\0组成与a不等价5.标识常量#define 宏定义增强代码的可读性避免魔鬼数字宏定义只是代码的替换不会执行任何数据计算的操作宏定义中能加括号就加括号#define M 50#define N MM2变量在程序运行过程中值可以发生改变的量变量因为在内存中有存储空间所以可以通过向存储空间赋值来修改变量的值变量必须先定义再使用开辟对应类型的变量空间空间名称为变量名通过变量名可以访问该空间存取变量中的数据时必须按照变量类型完成对数据的操作1.变量的定义数据类型 变量名;数据类型基本数据类型构造数据类型变量名只能由字母、数字、下划线构成不能以数字开头不能与C语言关键字重名最好不要与C语言库函数重名变量名最好做到见名知意驼峰法、Linux内核 GNU整形变量定义:short var;unsigned short var;int var;unsigned int var;long var;unsigned long var;浮点型变量定义float var;double var;字符型变量定义char var;unsigned var泊尔类型变量定义#include stdbool.hbool var;2.变量的初始化初始化定义变量时为变量赋初值称为初始化赋值变量定义完毕后通过“”对变量空间赋值将“”右边的值拷贝到“”左边的空间注意如果变量不初始化变量为随机值所以变量一定要初始化不要使用未经初始化的变量3表达式概念由运算符连接的常量或变量组成的式子特点表达式一定有类型表达式一定有值1.混合数据数据类型运算如果运算符左右两端类型不一致需要转换为同一类型进行运算转换规则低精度类型转换为高精度类型浮点数类型精度 整数类型精度同一类型所占空间越大精度越高无符号类型精度 有符号类型精度char、short在数据运算时会强制换转为int进行数据运算和数据处理float在数据运算时会强制换换位double进行数据运算和数据处理类型转换1. 强制类型转换显示类型转换类型表达式/变量2. 隐式类型转换主要发生在混合数据类型运算和处理时低精度转换为高精度4运算符1.算数运算符加法、-减法、*乘法、/除法、%取余、自增、--自减%唯一不能对浮点数操作的算数运算符/--只能对变量操作2.赋值运算符、、-、*、/、%左值变量可以作为左值常量/表达式不能作为左值右值变量/常量/表达式都可以作为右值混合类型赋值处理方式1. 整形赋值给浮点数类型扩展精度2. 浮点数类型赋值给整形舍弃小数点后的精度数据3. 如果有符号和无符号整形互相赋值会直接完成内存空间的拷贝4. 小数据放入大空间有符号数扩符号位无符号数扩05. 大数据放入小空间直接截取数据低位3. 逗号运算符从左到右依次执行逗号表达式并将最后一个逗号表达式的结果作为整体的结果4. sizeof运算符sizeof可以获得数据类型或者变量所占内存空间大小单位字节5. 运算符优先级括号 单目 双目算数 移位 关系 位 逻辑 三目 赋值 逗号