一、布尔类型Boolean Type1.1 基本介绍布尔值用于表示真、假两种状态通常用于逻辑运算和条件判断。C语言中布尔类型的支持经历了三个阶段的演进• C89标准无布尔类型以0为假非0为真需借助宏定义模拟• C99标准 _Bool 类型只能赋值为0或1非0值都会被存储为1• C99标准 stdbool.h定义了 bool、true、false最推荐的方式1.2 代码演示——宏定义方式图1宏定义实现布尔类型1.3 代码演示——C99 _Bool 类型图2C99 _Bool 类型1.4 代码演示——推荐stdbool.h 头文件图3stdbool.h 方式推荐二、变量使用的注意事项2.1 基本规则• 变量必须先声明后使用。• 可以先声明变量再赋值也可以在声明变量的同时进行赋值。• 变量的值可以在同一类型范围内不断变化。• 一句代码中可以同时定义多个同类型变量一句代码以分号结束。• 变量只在其定义的大括号内有效——这就是变量的作用域和生命周期。• 字面量有默认类型整型默认 int浮点型默认 double。• 变量未赋值时不建议使用会输出垃圾值。2.2 代码演示——变量使用注意事项图4变量使用注意事项sizeof、类型后缀、垃圾值2.3 代码演示——变量的作用域和生命周期变量只在其定义的大括号内有效超出作用域后变量不再可用。内层大括号中可以定义同名变量此时内层变量会遮蔽外层同名变量。图5变量的作用域和生命周期三、自定义常量3.1 常量的分类常量是程序运行时其值不能改变的量。常量分为两类• 字面量常量直接使用的常量不需要定义或声明如 100、3.14、A。• 标识符常量使用标识符作为常量名包括 #define 定义的标识符常量和 const 关键字定义的标识符常量。3.2 使用 #define 定义常量宏定义#define 来定义常量也叫作宏定义就是用一个标识符来表示一个常量值。编译时全部替换成指定的常量值即宏替换。注意不要以分号结尾#define 必须写在 main 函数外面。3.3 使用 const 定义常量const 定义的常量有详细的数据类型会在编译阶段进行安全检查类型安全性更强。格式const 数据类型 常量名 常量值;3.4 代码演示图6#define 和 const 定义常量四、基本数据类型之间的转换4.1 自动类型转换隐式转换不同类型的数据进行混合运算时窄类型会自动转为宽类型不会造成精度损失。• 窄类型赋值给宽类型不会造成精度损失。• 宽类型赋值给窄类型会造成精度损失。4.2 强制类型转换显式转换宽类型赋值给窄类型时编译器会产生警告。如果明确希望转换数据类型需要用到强制类型转换。格式类型名变量、常量或表达式注意数据是什么类型就拿什么类型接收不要动不动强转强转有风险。4.3 代码演示——强制类型转换图7强制类型转换4.4 代码演示——自动类型提升自动类型的提升大的接收小的不会造成精度损失。char 和 short 类型数据做运算时会自动提升至 int 类型再进行运算。图8自动类型提升
C语言-第三天
一、布尔类型Boolean Type1.1 基本介绍布尔值用于表示真、假两种状态通常用于逻辑运算和条件判断。C语言中布尔类型的支持经历了三个阶段的演进• C89标准无布尔类型以0为假非0为真需借助宏定义模拟• C99标准 _Bool 类型只能赋值为0或1非0值都会被存储为1• C99标准 stdbool.h定义了 bool、true、false最推荐的方式1.2 代码演示——宏定义方式图1宏定义实现布尔类型1.3 代码演示——C99 _Bool 类型图2C99 _Bool 类型1.4 代码演示——推荐stdbool.h 头文件图3stdbool.h 方式推荐二、变量使用的注意事项2.1 基本规则• 变量必须先声明后使用。• 可以先声明变量再赋值也可以在声明变量的同时进行赋值。• 变量的值可以在同一类型范围内不断变化。• 一句代码中可以同时定义多个同类型变量一句代码以分号结束。• 变量只在其定义的大括号内有效——这就是变量的作用域和生命周期。• 字面量有默认类型整型默认 int浮点型默认 double。• 变量未赋值时不建议使用会输出垃圾值。2.2 代码演示——变量使用注意事项图4变量使用注意事项sizeof、类型后缀、垃圾值2.3 代码演示——变量的作用域和生命周期变量只在其定义的大括号内有效超出作用域后变量不再可用。内层大括号中可以定义同名变量此时内层变量会遮蔽外层同名变量。图5变量的作用域和生命周期三、自定义常量3.1 常量的分类常量是程序运行时其值不能改变的量。常量分为两类• 字面量常量直接使用的常量不需要定义或声明如 100、3.14、A。• 标识符常量使用标识符作为常量名包括 #define 定义的标识符常量和 const 关键字定义的标识符常量。3.2 使用 #define 定义常量宏定义#define 来定义常量也叫作宏定义就是用一个标识符来表示一个常量值。编译时全部替换成指定的常量值即宏替换。注意不要以分号结尾#define 必须写在 main 函数外面。3.3 使用 const 定义常量const 定义的常量有详细的数据类型会在编译阶段进行安全检查类型安全性更强。格式const 数据类型 常量名 常量值;3.4 代码演示图6#define 和 const 定义常量四、基本数据类型之间的转换4.1 自动类型转换隐式转换不同类型的数据进行混合运算时窄类型会自动转为宽类型不会造成精度损失。• 窄类型赋值给宽类型不会造成精度损失。• 宽类型赋值给窄类型会造成精度损失。4.2 强制类型转换显式转换宽类型赋值给窄类型时编译器会产生警告。如果明确希望转换数据类型需要用到强制类型转换。格式类型名变量、常量或表达式注意数据是什么类型就拿什么类型接收不要动不动强转强转有风险。4.3 代码演示——强制类型转换图7强制类型转换4.4 代码演示——自动类型提升自动类型的提升大的接收小的不会造成精度损失。char 和 short 类型数据做运算时会自动提升至 int 类型再进行运算。图8自动类型提升