当前位置:网站首页>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入门计划】基本概念(8)-瓦片地图 TileMap 01
- 简易网络传输方法
- MATLAB | 一种简易的随机曼陀罗图形生成函数
- uniapp的webview滑动缩放
- uniapp隐藏导航栏和横屏显示设置
- C语言03、数组
- C专家编程 第3章 分析C语言的声明 3.6 typedef int x[10]和#define x int[10]的区别
- How much do you know about the intelligent operation and maintenance service of data warehouse based on DMS?
- 我写了个”不贪吃蛇“小游戏
- leetcode:187. 重复的DNA序列
猜你喜欢
SQL中对 datetime 类型操作
leetcode-693.交替位二进制数
QT QT 】 【 to have developed a good program for packaging into a dynamic library
I am doing open source in Didi
袁小林:沃尔沃专注于出行的安全感,并且把它做到极致
TCP 可靠吗?为什么?
How to get the 2 d space prior to ViT?UMA & Hong Kong institute of technology & ali SP - ViT, study for visual Transformer 2 d space prior knowledge!.
【Unity入门计划】基本概念(8)-瓦片地图 TileMap 02
常见分布式理论(CAP、BASE)和一致性协议(Gosssip、Raft)
Introduction to the advantages of the new generation mesh network protocol T-Mesh wireless communication technology
随机推荐
smp,numa和mpp体系结构总结
Analysis of ffplay video playback principle
To add digital wings to education, NetEase Yunxin released the overall solution of "Internet + Education"
建造者模式/生成器模式
我在滴滴做开源
leetcode:187. 重复的DNA序列
EA 改口,称单人游戏是产品组合中“非常重要的一部分”
spark入门学习-2
[Unity Getting Started Plan] Basic Concepts (8) - Tile Map TileMap 02
GTK实现旋转加载动画
C专家编程 第3章 分析C语言的声明 3.3 优先级规则
uniapp隐藏导航栏和横屏显示设置
DataGrip:非常好用的数据库工具,安装与使用教程,亮点介绍
C专家编程 第3章 分析C语言的声明 3.7 typedef struct foo{... foo;}的含义
使用uniapp 封装一个request 请求
CPU个数_核心数_线程数之间的关系
WordPress 5.2.3 更新,升级出现请求超时的解决方法
C专家编程 第3章 分析C语言的声明 3.2 声明是如何形成的
【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01
20. Valid Parentheses