标准C与经典C的区别:程序设计的现代方法
需积分: 10 184 浏览量
更新于2024-10-09
收藏 209KB PDF 举报
"C语言程序设计:现代方法_附录C_标准C与经典C的比较"
这篇资源主要探讨了标准C(按照ANSI/ISO C标准)与经典C(Kernighan和Ritchie的《C Programming Language》第一版所描述的版本)之间的差异。以下是这些差异的详细说明:
1. **标识符**:在经典C中,标识符的前8个字符是唯一的,而标准C不再限制这个长度。
2. **关键字**:标准C引入了`const`、`enum`、`signed`、`void`和`volatile`这五个新关键字,这些都是经典C中没有的。同时,经典C将`entry`视为关键字,但在标准C中它不再是关键字。
3. **一元+运算符**:标准C引入了一元`+`运算符,允许对一个表达式求正,经典C中则没有这个操作。
4. **switch语句**:在经典C中,`switch`语句的控制表达式必须是`int`类型,而标准C放宽了这个限制,允许使用任何整数类型,包括`unsigned int`和`long int`。
5. **基本类型**:
- **无符号类型**:经典C只有一个无符号类型`unsigned int`,标准C增加了更多的无符号类型,如`unsigned char`, `unsigned short`等。
- **signed**:标准C引入了`signed`类型说明符,使得明确指定有符号类型成为可能。
- **数的后缀**:标准C提供了`U`或`u`后缀来表示无符号整数常量,以及`F`或`f`后缀来表示`float`类型的浮点常量。`L`或`l`后缀在经典C中只能用于整数,但标准C允许用于浮点常量,表示`long double`。
- **long float和long double**:经典C中没有`long double`类型,它将`long float`视为`double`的别名,而在标准C中这是独立的类型。
6. **转义序列**:标准C添加了`\a`(警报)、`\v`(垂直tab)和`\?`(问号)转义序列,以及十六进制的转义序列,如`\xHH`。
7. **size_t类型**:标准C中,`sizeof`运算符的结果类型是`size_t`,这比经典C中的`int`类型更精确,可以处理更大范围的大小。
8. **通用的算术转换**:标准C对不同类型间的算术运算进行了更细致的规定,例如,经典C会强制`float`到`double`的转换,并规定短无符号整数与长有符号整数相加总是产生无符号结果,而标准C对此有更复杂和明确的规则。
9. **函数定义**:在标准C中,函数定义的参数列表必须包含参数的类型,而在经典C中,可以省略类型,让编译器根据上下文推断。
这些差异反映了C语言随着时间的发展和标准化过程中的改进,旨在提高语言的灵活性、安全性和可移植性。为了充分利用现代C的功能和保证代码的兼容性,开发者应当遵循标准C的规范。如果使用的编译器不是标准兼容的,应查阅其手册以了解支持的特性。此外,对于其他不那么重要的差异,可以参考《C Programming Language》第二版的附录A和C。
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
abcglh
- 粉丝: 0
- 资源: 9
最新资源
- genkan-theme-uchi:家Uchi | Genkan的默认主题
- matlab拟合差值代码-MERT-NMR:双络合物弛豫数据分析
- 番茄定时器
- sandbox-spring-boot-app:Spring Boot应用程序样本
- gephi_twitter_media_downloader:一个小脚本,用于接收.csv Tweet ID,或从Gephi的TwitterStreamingImporter插件导出并下载相关的Tweet媒体
- KML文件筛选带位置的照片程序
- biznet-backend
- 人工智能原理作业.zip
- 2019嘶吼白帽子技术沙龙 - 安全技术资料汇总(共4份).zip
- Analysis-Resynthesis Sound Spectrograph-开源
- dot2moon:该工具可检查给定Web应用程序URL中的路径遍历跟踪,此外还具有多线程,设置超时和5层验证的功能
- 柏树
- CSharp_delegate.rar_C#编程_C#_
- SenseTask:SenseTask是用于管理项目,任务,里程碑的android应用程序
- Booksmart-crx插件
- validate.rar_嵌入式Linux_QT_