C诡异离奇,缺陷重重,却获得了巨大的成功。
这句话不是我说的,是Dennis Ritchie说的。在《C专家编程》这本书里面的第一章就是C:穿越时空的迷雾,第一句就是这句话。
C 语言确实非常风行,我在大学时还是Turbo 2.0的年代,C语言在DOS下有一统天下之势。不过当时还有pascal,这个语言其实是个良好的结构化的语言——至少远比C严谨。所以在当时开课 的时候,pascal也是和C同等地位的可以选修的课,不过今天估计不会再开这门课了。
看下面一段代码:
int array[] = {23, 34, 12, 17, 204, 99, 16};
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))
main()
{
int d = -1, x;
if(d <= TOTAL_ELEMENTS - 2)
{
x = array[d+1];
}
}
代码似乎没有问题,但事实上,if语句判定条件为FALSE。
?!
因为sizeof的返回类型为unsigned类型的,于是d也就悄悄转型成了unsigned类型,做为-1的d忽然成了一个庞大的数,if的判断就出乎意料了。
......
类似的问题不是编译器的问题,也不是库函数的问题,而是C语言本身的问题。
分享到:
相关推荐
c语言小游戏c语言项目源码大全合集(60例): c语言24点游戏源码 c语言Turbo C下写的俄罗斯方块 c语言UDP传输系统源码 c语言万年历源码 c语言五子棋源码 c语言俄罗斯方块 c语言做的一个任务管理器 c语言做的播放器...
C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言...
28个C语言小游戏(免积分下载)主要游戏名如下所示: c语言24点游戏源码 c语言Turbo C下写的俄罗斯方块 c语言五子棋源码 (一个人用不了那么多可以几个人入手哦!) c语言别踩白块儿(双人)源码 c语言吃逗游戏源码 ...
期末大作业-33个C语言程序(免积分下载),程序内容如下所示: c语言火车票订票管理源码 c语言电子时钟程序 C语言超市管理系统 c语言通讯录管理系统源码 c语言商品销售系统源码(用不了那么多可以和别人一起入手) ...
C语言期中考试试题及答案C语言期中考试试题及答案C语言期中考试试题及答案C语言期中考试试题及答案C语言期中考试试题及答案C语言期中考试试题及答案C语言期中考试试题及答案C语言期中考试试题及答案C语言期中考试...
C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级玛丽游戏源码C语言游戏源码 超级...
C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言...
C语言项目——火车订票系统.zip C语言项目——火车订票系统.zip C语言项目——火车订票系统.zip C语言项目——火车订票系统.zip C语言项目——火车订票系统.zip C语言项目——火车订票系统.zip C语言项目——火车...
C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——...
DMA传输的C语言实现DMA传输的C语言实现DMA传输的C语言实现DMA传输的C语言实现DMA传输的C语言实现DMA传输的C语言实现DMA传输的C语言实现DMA传输的C语言实现DMA传输的C语言实现DMA传输的C语言实现DMA传输的C语言实现...
C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统....
C语言课程设计大作业 - 马里奥游戏源码C语言课程设计大作业 - 马里奥游戏源码C语言课程设计大作业 - 马里奥游戏源码C语言课程设计大作业 - 马里奥游戏源码C语言课程设计大作业 - 马里奥游戏源码C语言课程设计大作业 ...
C语言项目——图书管理系统.zip C语言项目——图书管理系统.zip C语言项目——图书管理系统.zip C语言项目——图书管理系统.zip C语言项目——图书管理系统.zip C语言项目——图书管理系统.zip C语言项目——图书...
通过一系列实际情形的需求,引入关于程序设计的基本知识,加上由浅入深地比较了C语言不同语法以及各种语句的区别,能够全面掌握C语言的语法特点。除此之外,本书并不仅仅着眼于入门知识讲解,对C语言在大型应用程序...
收集整理的简单易懂的60套C语言小游戏源代码(可运行,供学习设计参考): c语言24点游戏源码 c语言Turbo C下写的俄罗斯方块 c语言UDP传输系统源码 c语言万年历源码 c语言五子棋源码 c语言俄罗斯方块 c语言做的一个...
嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程嵌入式c语言编程...
比特c语言课件C语言初阶
C语言超级玛丽游戏C语言超级玛丽游戏C语言超级玛丽游戏C语言超级玛丽游戏C语言超级玛丽游戏C语言超级玛丽游戏C语言超级玛丽游戏C语言超级玛丽游戏C语言超级玛丽游戏C语言超级玛丽游戏C语言超级玛丽游戏C语言超级玛丽...
c语言24点游戏源码 c语言Turbo C下写的俄罗斯方块 c语言UDP传输系统源码 c语言奔跑的火柴人游戏源码 c语言别踩白块儿(双人版)源码 C语言超市管理系统 c语言吃逗游戏源码 c语言打字母游戏源码 c语言打字游戏代码 ...
《明解c语言》是日本的c语言经典教材,自出版以来不断重印、修订,被誉为“c语言圣经”。作者在日本it界家喻户晓,出版过一系列极富影响力的计算机教材和参考书。其简洁、通俗的文风深受读者的喜爱。 《明解c语言...