C语言学习笔记(结合教程)
在C语言的学习中,了解基本类型的赋值和转换是非常重要的基础。C语言中确实存在隐式转换和强制转换,但与Java有所不同。隐式转换在C语言中被称为“整型提升”,只涉及到char和short类型在表达式中的提升至int型。而大于等于int型的转换则遵循寻常算术转换规则,按数据存储长度增长的方向进行自动转换。这种转换适用于算术操作符,如加减乘除和取模。关系操作符则不受此规则约束,它们会将不同类型的操作数转换为相同的类型进行比较。 在赋值过程中,如果左右两边的类型不同,右侧操作数(右值)会被转换为左侧操作数(左值)的类型。需要注意的是,不同类型之间的赋值可能导致精度损失,例如从int转换为float时,由于float的精度限制,可能会丢失部分有效数字。而从int转换为double则不会出现此类问题,因为double的精度更高。 左值和右值是C语言中的重要概念。左值可以是变量或表达式,它标识了一个可以存储结果值的位置,而右值则不能。例如,函数调用的结果是右值,因为它不能被赋值。 位运算方面,无符号数和有符号数的左移都是逻辑移位,即填充0。无符号数的右移同样如此,但有符号数的右移可能是逻辑移位也可能是算术移位,具体取决于编译器。逻辑移位始终填充0,而算术移位则根据符号位决定填充0还是1。这在进行位运算时需要特别注意。 关于数据类型的长度,C语言中包括了char、signed char、unsigned char、short int、unsigned short int、int、unsigned int、long int、unsigned long int等类型。每种类型都有其最小和最大值的定义,这些值在<limits.h>头文件中有详细说明。例如,short int至少为16位,int和long int至少分别与short int和int一样长。整型字面值可以是这9种类型中的任何一种。 浮点类型包括float、double和long double。其中,long double至少与double一样长,double至少与float一样长。浮点类型的精度在<float.h>头文件中有规定,例如,float通常有6位有效数字,double有15位,这影响了数值转换时的精度保持。 理解这些基础知识对于编写高效且可靠的C语言程序至关重要。在编程实践中,需要合理利用这些特性,避免不必要的类型转换导致的精度损失或潜在的错误。同时,对位运算和数据类型的深入理解也能帮助我们写出更安全、高效的代码。
剩余11页未读,继续阅读
- 粉丝: 7027
- 资源: 94
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 连接ESP32手表来做验证20241223-140953.pcapng
- 小偏差线性化模型,航空发动机线性化,非线性系统线性化,求解线性系统具体参数,最小二乘拟合 MATLAB Simulink 航空发动机,非线性,线性,非线性系统,线性系统,最小二乘,拟合,小偏差,系统辨
- 好用的Linux终端管理工具,支持自定义多行脚本命令,密码保存、断链续接,SFTP等功能
- Qt源码ModbusTCP 主机客户端通信程序 基于QT5 QWidget, 实现ModbusTCP 主机客户端通信,支持以下功能: 1、支持断线重连 2、通过INI文件配置自定义服务器I
- Linux下TurboVNC+VirtualGL 使用GPU卡vglrun glxgears
- QGroundControl-installer.exe
- Linux下TurboVNC+VirtualGL 使用GPU卡vglrun glxgears
- 台球检测40-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 颜色拾取器 for Windows
- 数字按键3.2考试代码
评论1