1,编译器设计者的金科玉律:效率.
编译器的效率:
(1)编译时效率(产生可执行代码的速度)
(2)运行时效率(可执行代码运行的速度)
2,刚开始,C语言的客户主要是编译器设计者.
因此,C语言的许多特性是为了方便编译器设计者而设定的.
(1)数组的下标从0开始.
(2)C语言的基本数据类型与底层语言相关联.
(3)auto关键字,摆设.
缺省的变量内存分配模式:"进入程序块时,自动分配内存"(对应于全局静态分配或堆上动态分配)
(4)不允许嵌套函数.
3,K&R C:1978年,The C Programming Language出版,作者:Brian Kernighan和Dennis Ritchie.
C语言的演化之路: 早期的C(1972-3)-->K&R C(1976-9)-->ANSI C(1983-9)
ANSI:美国国家标准化组织.
4,一些术语:
不可移植的代码
(1)由编译器设计者决定采用何种行为.如:整数右移时,符号位的扩展.
(2)未确定的.如:参数求值的顺序.
坏代码:
(1)未定义的,不正确的做法,但标准没有规定应该怎样做.如:有符号整数溢出时,采取什么行动.
(2)约束条件:必须遵循的限制或要求.
标准规定:编译器只有在违反语法规则和约束条件的情况下才产生出错信息.
意味着:不违反约束条件的语法规则可以不遵循.
例如:可以声明一个malloc()函数.
可移植的代码:
一个严格遵循标准的程序,应该是:
(1)只使用已经确定的特性.
(2)不产生任何依赖由编译器定义的或未确定的或未定义的特性的输出.
5,关于数值类型的转换:
(1)当执行算术运算时,如果数值类型不同,就会发生转换.
(2)数据类型一般朝着精度更高,长度更长的方向转换.
(3)整型数如果转换为signed不会丢失信息,就优先转换为signed,否则转换为unsigned.
6,给定下面的程序的:
#include<stdio.h>
int data[]={1,2,3};
#define SN (sizeof(data)/sizeof(data[0]))
int main()
{
int d=-1;
printf("%d\n",d<SN); //bug:if语句测试时,d被升级为unsigned类型.
printf("%d\n",d<(int)SN);
return 0;
}
建议:
(1)尽量不要在代码中使用无符号类型.不要因为无符号不存在负数,就用来表示数量.
(2)只有在使用位段和二进制掩码时,才使用无符号类型.
(3)在表达式中使用强制类型转换,使操作数均为signed或unsigned.
分享到:
相关推荐
这篇“红领巾广播稿:穿越时空走进开国大典”并不是关于IT行业的内容,而是关于教育和历史的。它似乎是一份学校活动的广播稿,旨在引导学生回顾中国的历史,特别是开国大典这一重大历史事件。开国大典是指1949年10月...
1. 数组下标从0开始,因为偏移量的概念 2. C的基本数据类型直接与硬件底层相对应 3. auto关键字显然是摆设:它只对创建符号表入口的编译器设计者有意义,
js穿越时空隧道特效,梦幻炫酷效果,前端必看! js穿越时空隧道特效,梦幻炫酷效果,前端必看! js穿越时空隧道特效,梦幻炫酷效果,前端必看! js穿越时空隧道特效,梦幻炫酷效果,前端必看! js穿越时空隧道特效,...
资本回报:穿越资本周期的投资 一个资产管理人的报告
【标题】"MISC-穿越时空的思念"可能是一个与声音相关的项目或研究,标签"声学"进一步确认了这一点。在声学领域,我们探讨的是声音的产生、传播、接收以及其在不同介质中的行为。这个标题可能是某种声音实验、音频...
这是一款高成本、高体量、高质量的 3D 游戏: - 【A / D】操控警察猫左右移动; -【W】操控跳跃; - 按住鼠标按钮瞄准四周,然后释放射击!如果你在不接触地面的时候这样做,你就会朝着相反的方向发射!(当你瞄准...
这篇报告由国泰君安消费大组的分析师訾猛和邱苗撰写,是《消费传奇系列报告》的一部分,专注于研究全球酒水行业中的成功企业,特别是烈酒和啤酒行业的巨头,如帝亚吉欧和保乐力加,探讨它们如何在经济周期中保持稳定...
一个探险家计划徒步穿越沙漠,每天计划步行40km。探险家每天消耗1.5kg水和1kg食物。假设探险家可以在途中建立食物和水的储藏点,以确保探险家能尽快安全抵达目的地。 为了解决这个问题,我们需要建立一个数学模型。...
43个高清时空穿越背景视频,1920*1080规格,可以用于开场视频,对于游戏开发来说,可以代替粒子特效
20210407-中信建投-保险行业2020年报综述:穿越低谷迎转机.pdf
中国经济与华西商业地产未来研判:穿越周期,展望2025.pdf
3. **对冲端的选择**:对冲手段主要依赖于股指期货,因为它们提供了一种有效且流动性良好的方式来对冲整个市场或特定市场板块的风险。然而,由于期货市场的基差风险(期货价格与现货价格之间的差距),对冲操作可能...
报告详细探讨了保险行业在2021年乃至未来一段时间内的投资机遇和风险,提出了一套穿越行业周期的投资理念,倡导投资者保持耐心以期待行业在长远发展中的积极回报。 报告标题中的“穿越周期”这一概念,指的是投资者...
│ 第*课***_580.doc│ 第*课:***.pdf│ 第*课:***.sb3│├─第*课:***教学步骤│ 第1步 ***.mp4│ 第2步 ***.mp4│ 第3步 ***.mp4│ 第4步 ***.mp4│ 第5步 ***.mp4│ 第6步 ***.mp4│ 第7步 ***.pdf│ 第7步 **...
这篇压缩包文件“数学建模国赛优秀论文集锦-2020B:穿越沙漠游戏下玩家的最优策略模型.zip”包含了一篇在2020年全国数学建模竞赛中获奖的论文,主要探讨了在特定的沙漠游戏背景下的玩家策略优化问题。这个主题融合了...
总督 ... 我们网站的后端穿越时间和空间,以精确地预测您的未来。 相应地庆祝或恐慌。 由埃默里大学的大四学生 Dave Stess 和 Milap Naik 为 CS370 制作。 由 Django 提供支持,由 jQuery 响应。
这篇压缩包文件“数学建模国赛优秀论文集锦-2020B:穿越沙漠游戏最佳策略模型的研究与构建.zip”包含了一篇在2020年全国数学建模竞赛中获奖的论文,主要探讨了如何在模拟的沙漠环境中制定最佳的游戏策略。...
新能源汽车2020年度投资报告:穿越风暴 寻找成长