当前位置:网站首页>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):一个遵循标准的程序可以依赖某种编译器特有的不可移植的特性*/
/* 输出:
*/
边栏推荐
- 移动应用出海,你的“网络优化”拖后腿了吗?
- ffplay视频播放原理分析
- 【无标题】
- 一文看懂推荐系统:召回01:基于物品的协同过滤(ItemCF),item-based Collaboration Filter的核心思想与推荐过程
- C语言02、语句、函数
- I am doing open source in Didi
- 一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样
- 袁小林:沃尔沃专注于出行的安全感,并且把它做到极致
- [Unity Getting Started Plan] Basic Concepts (8) - Tile Map TileMap 01
- 正向代理与反向代理
猜你喜欢
Hannah荣获第六季完美童模全球总决赛全球人气总冠军
2021年数据泄露成本报告解读
攻防世界----bug
Small Tools (4) integrated Seata1.5.2 distributed transactions
Cookie和Session的关系
参与便有奖,《新程序员》杂志福利来袭!
正向代理与反向代理
[Deep Learning] Today's bug (August 2)
Difference and performance comparison between HAL and LL library of STM32
C专家编程 第3章 分析C语言的声明 3.8 理解所有分析过程的代码段
随机推荐
C专家编程 第3章 分析C语言的声明 3.7 typedef struct foo{... foo;}的含义
DAYU200 OpenHarmony标准系统HDMI全屏显示
[Unity Getting Started Plan] Basic Concepts (8) - Tile Map TileMap 01
【带你了解SDN和网络虚拟化】
Hannah荣获第六季完美童模全球总决赛全球人气总冠军
protobuf 中数据编码规则
ReentrantReadWriteLock详解
黄致绮 荣获第六季完美童模全球总决赛 全国总冠军
uniapp的webview滑动缩放
Windows 事件转发到 SQL 数据库
我在滴滴做开源
一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
AI+BI+Visualization, Deep Analysis of Sugar BI Architecture
When mobile applications go overseas, is your "network optimization" holding back?
smp,numa和mpp体系结构总结
STM32的HAL和LL库区别和性能对比
Introduction to spark learning - 1
攻防世界----bug
如何分析周活跃率?
Detailed ReentrantLock