- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
超越数据种类的重重圈套 数据种类是编程语言中最基本的组成元素,但倒是最易被忽视的一环,程序员愿意把几乎100%的精力都花在算法研究、程序流控制等大环节上,却极少在数据种类问题上频频商酌。细节决定成败,一个螺丝钉的失误可能致使一个飞 行器的毁坏,一个数据种类的错误相同能够让宏大的软件系统崩溃。MISRA—c中对于数据种类的规则主要分为两个方面。一是数据种类有关的编程风格;二 是不同数据种类之间的变换,后者是要点。这里介绍MISRA_C对于数据 数据种类是编程语言中最基本的组成元素,但倒是最易被忽视的一环,程序员愿意把几乎100%的精力都花在算法研究、程序流控制等大环节上,却极少在数据种类问题上频频商酌。 细节决定成败,一个螺丝钉的失误可能致使一个飞翔器的毁坏,一个数据种类的错误相同能够让宏大的软件系统崩溃。 MISRA—c中对于数据种类的规则主要分为两个方面。一是数据种类相 关的编程风格;二是不同数据种类之间的变换,后者是要点。这里介绍 MISRA_C对于数据种类的部分规则,更多的规则请参照《MISRA-C:2OO4)》一 书。 下文中凡是未加特别说明的都是强迫(required)规则.个别介绍 (advisory)规则加了“介绍”表记。 在睁开阐述以前,先看两个问题,读者能够带着疑问阅读完本章内 容。 问题1:履行以下程序,result_8的值是多少? ulnt8_tporI=0x5a; uint8一tresuh_8; result_8=(~port)4; /*注:uint8_t表示8位无符号整型*/ 问题2:履行以下程序,d的值是多少? uintl6_ta=10; uin|16_t b=6553l; uint32_t c=0; uint32_t d; d=a+b+c; /*注:uintl6_t表示16位无符号整型,uint32_t表示32位无符号整型*/ 数据种类有关的编程风格 规则6.3(介绍):一定用typedef显式表记出各数据种类的长度和符号特征,防止直接使用标准数据种类。比如,一个32位的整数系统,可定义以下: typedef char chat_t; typedef sigr led char int8_t ; typedef signed short intl6_t ; typedef signed int int32_t; typedef signedlongint64_t ; typedef unsitgned chat uint8_t ; typedefunsignedshortuint16_t; typedefunsignedintuint32_t; typedef unsigned 1ong uint64_t ; 之因此用intl6_t 和uint32_t 等取代signed short和 unsigned int 等标准数据种类表记符,是因为不同的编译器对标准数据种类 的长度定义是不相同的。比方说一个 16位系统,很可能就把short 和int 都定 义成16位,long定义成32位,这与上文32位系统中标准数据种类的长度就不一致。用intl6_t和uint_32等表记符来定义变量,一方面增添了程序的可读性,使得程序员自己或其余读者都能对程序中数据的详细信息胸中有数;另一方面也有助于程序在不同系统之间的移植,节俭开发时间,减少隐患。规则 1:不得使用八进制常数(O除外)或八进制转义符。思虑以下数组: code[1]=109;code[2]=100; code[3]=O52 code[4]=O71; /*注:八进制常数须在最高位加O*/ code[3]的实质值是42(十进制),code[4]的实质值是57(十进制);但预计好多读者会把code[3]认成是52(十进制),code[4]认成是7l(十进制)。 八进制数在C程序中使用的频次远小于十进制数和十六进制数,为了保证程序的可读性和安全性,程序员不同意使用八进制数以及八进制转义 符。 数据种类变换 假如程序员对数据种类的变换有很清楚的认识,而且在必需的地方做 了正确的显式强迫变换,那程序是安全的。但有时因为程序员的大意,或许是 过于相信编译器的“智慧”程度,致使表达式中有好多隐式变换(即没有显式地强迫变换),而这些隐式数据种类变换很可能就组成致命的破绽。MISRA—C中数据种类变换规则的着眼点,即是防止有破绽的隐式数据变换。 在介绍MISRA—C对于数据种类变换的部分规则以前,先介绍整型操作数的“均衡(balance)”原则。所谓整型操作数“均衡”原则,即对于隐式表达 式,编译器会依据既定规则对操作数进行位数扩大,此中int和unsiglledint在整型表达式“均衡”过程中占重要地位。 下边剖析一个简单的隐式整型表达式c=a+b(假定
有哪些信誉好的足球投注网站
文档评论(0)