当前位置:网站首页>C专家编程 第1章 C:穿越时空的迷雾 1.6 它很棒,但它符合标准吗
C专家编程 第1章 C:穿越时空的迷雾 1.6 它很棒,但它符合标准吗
2022-08-03 16:09:00 【weixin_客子光阴】
什么东西能被语言接受,什么东西不能被语言接受。前两个术语涉及不可移植的代码
(unportable code)
不可移植的代码(uportable code)
由编译器定义的(implementation-defined):由编译器设计者决定采取何种行动(就是说,
在不同的编译器中所采取的行为可能并不相同,但它们都是正确的),并做好了文档记录。
例如,当整型向右移位时,要不要扩展符号位。
未确定的(unspecified):在某些正确的情况下,标准并未规定应该怎样做。
例如,参数求值的顺序。
不可移植的代码(unportable code)
unportable code:implementation-defined(由编译器定义的)
例如,当整数向右移位时,要不要扩展符号位
未确定的(unspecified):在某些正确的情况下的做法,标准并未明确规定怎样做。
例如,参数求值的顺序
坏代码(bad code)
未定义的(undefined):在某些不正确的情况下的做法,标准并未规定应该怎样做。
例如,当一个有符号整数溢出时应该采取什么行动。
约束条件(a constraint):这是一个必须遵守的限制或要求。如果不遵守,那么你的
程序的行为就是上面说的未定义的行为。
标准规定:编译器只有在违反语法规则和约束条件的情况下才能产生错误信息。
例如,%操作符要求操作数必须属于整数
不属于约束条件规则的例子:所有在c语言标准头文件中声明的标识符均保留
flyback transformer 回扫变压器
可移植的代码(portable code)
严格遵循标准的(strictly-conforming):一个严格遵循标准的程序应该具有如下特点:
*只使用已确定的特性
*不突破任何由编译器实现的限制
*不产生任何依赖由编译器定义的或未确定的或未定义的特性的输出。
这样的规定的主要目的就是最大限度地保证可移植性。这样,不论在什么平台上运行严格标准的程序,都会产生相同的输出。
/*不是严格遵循标准的程序*/
#include<limits.h>
#include<stdio.h>
int main() {
(void)printf("biggest int is %d", INT_MAX); return 0;
}
/*并不严格遵循标准,其输出结果使用编译器定义的*/
/*为了保证可移植性,在现实代码中,应该始终加上必要的类型转换,返回值等*/
/*遵循标准的(conforming):一个遵循标准的程序可以依赖某种编译器特有的不可移植的特性*/
/* 输出:

*/
边栏推荐
- [Unity Getting Started Plan] Basic Concepts (8) - Tile Map TileMap 01
- 用户侧有什么办法可以自检hologres单表占用内存具体是元数据、计算、缓存的使用情况?
- 详谈RDMA技术原理和三种实现方式
- ReentrantReadWriteLock详解
- MySQL窗口函数 OVER()函数介绍
- C专家编程 第3章 分析C语言的声明 3.4 通过图标分析C语言的声明
- 面了个腾讯35k出来的,他让我见识到什么叫精通MySQL调优
- 甲方不让用开源【监控软件】?大不了我自己写一个
- 【带你了解SDN和网络虚拟化】
- 【There is no tracking information for the current branch. Please specify which branch you want to 】
猜你喜欢
随机推荐
【带你了解SDN和网络虚拟化】
为教育插上数字化的翅膀,网易云信发布「互联网+教育」整体解决方案
2021年数据泄露成本报告解读
甲方不让用开源【监控软件】?大不了我自己写一个
如何启动 NFT 集合
Tolstoy: There are only two misfortunes in life
出海季,互联网出海锦囊之本地化
黄致绮 荣获第六季完美童模全球总决赛 全国总冠军
"Avnet Embedded Weekly" Issue 276: 2022.07.25--2022.07.31
window.open不显示favicon.icon
为什么我强烈推荐使用智能化async?
MarkDown常用代码片段和工具
How much do you know about the intelligent operation and maintenance service of data warehouse based on DMS?
MySQL性能优化_小表驱动大表
建造者模式/生成器模式
I am doing open source in Didi
Introduction to the advantages of the new generation mesh network protocol T-Mesh wireless communication technology
【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01
正向代理与反向代理
Detailed explanation of ReentrantReadWriteLock









