数值限制------c++程序设计原理与实践(进阶篇)
每种c++的实现都在<limits>、<climits>、<limits.h>和<float.h>中指明了内置类型的属性,因此程序员可以利用这些属性来检查数值限制、设置哨兵机制等等。它们对于开发底层程序是非常重要的。如果你觉得需要这些属性值,表明你的工作很可能比较靠近硬件。但这些属性还有其他用途,例如,对语言实现细节感到好奇是很正常的:“一个int有多大?”,“char是有符号的吗?”等等。希望从系统文档中找到这些问题的正确答案是很困难的,而c++标准对这类问题大多没有明确规定。较好的方法是写一个简短的小程序来获得这些问题的答案:
#include<limits> cout<<"number of bytes in an int:"<<sizeof(int)<<'\n';
cout<<"largest int:"<<INT_MAX<<'\n';
cout<<"smallest int value:"<<numeric_limits<int>::min()<<'\n'; if(numeric_limits<char>::is_signed)
cout<<"char is signed\n";
else
cout<<"char is unsigned\n"; char ch=numeric_limits<char>::min();
cout<<"the char with the smallest positive value:"<<ch<<'\n';
cout<<"the int value of the char with the smallest positive value:"<<int(ch)<<'\n';
如果你编写的程序将来要用在多种硬件平台上,那么能在程序中获取上面这些信息就非常有价值了。另一种方法是将这些信息硬编码到程序中,但这对维护人员来说是灾难性的。
这些属性值对溢出检测也是很有用的。
c++程序设计原理与实践(进阶篇)
数值限制------c++程序设计原理与实践(进阶篇)的更多相关文章
- 有符号数和无符号数------c++程序设计原理与实践(进阶篇)
		有符号数与无符号数的程序设计原则: 当需要表示数值时,使用有符号数(如 int). 当需要表示位集合时,使用无符号数(如unsigned int). 有符号数和无符号数混合运算有可能会带来灾难性的后果 ... 
- 函数形参为基类数组,实参为继承类数组,下存在的问题------c++程序设计原理与实践(进阶篇)
		示例: #include<iostream> using namespace std; class A { public: int a; int b; A(int aa=1, int bb ... 
- 函数返回值string与返回值bool区别------c++程序设计原理与实践(进阶篇)
		为什么find_from_addr()和find_subject()如此不同?比如,find_from_addr()返回bool值,而find_subject()返回string.原因在于我们想说明: ... 
- (c++11)随机数------c++程序设计原理与实践(进阶篇)
		随机数既是一个实用工具,也是一个数学问题,它高度复杂,这与它在现实世界中的重要性是相匹配的.在此我们只讨论随机数哦最基本的内容,这些内容可用于简单的测试和仿真.在<random>中,标准库 ... 
- 实现求解线性方程(矩阵、高斯消去法)------c++程序设计原理与实践(进阶篇)
		步骤: 其中A是一个n*n的系数方阵 向量x和b分别是未知数和常量向量: 这个系统可能有0个.1个或者无穷多个解,这取决于系数矩阵A和向量b.求解线性系统的方法有很多,这里使用一种经典的方法——高斯消 ... 
- bitest(位集合)------c++程序设计原理与实践(进阶篇)
		标准库模板类bitset是在<bitset>中定义的,它用于描述和处理二进制位集合.每个bitset的大小是固定的,在创建时指定: bitset<4> flags; bitse ... 
- 编码原则实例------c++程序设计原理与实践(进阶篇)
		编码原则: 一般原则 预处理原则 命名和布局原则 类原则 函数和表达式原则 硬实时原则 关键系统原则 (硬实时原则.关键系统原则仅用于硬实时和关键系统程序设计) (严格原则都用一个大写字母R及其编号标 ... 
- gets()scanf()有害------c++程序设计原理与实践(进阶篇)
		最简单的读取字符串的方式是使用gets(),例如: char a[12]; gets(a); 但gets()和scanf()是有害的,曾经有大约1/4的成功黑客攻击是由于gets()和它的近亲scan ... 
- 宏(使用注意事项、主要用途)------c++程序设计原理与实践(进阶篇)
		使用宏的时候一定要小心:在c中没有真正有效的方法来避免使用宏,但宏带有严重的副作用,因为宏不遵守通常的c(或c++)作用域和类型规则——它只是一种文本替换. 宏的使用注意事项: 所以宏名全部大写. ... 
随机推荐
- Jenkins详细安装教程
			1.先下载msi文件 Jenkins下载链接: https://pan.baidu.com/s/1SACKNgW7OZrJoXMRDhsJxQ 提取码: 94b9 2.安装 解压后得到的是jenkin ... 
- winfrom绘制渐变  / 调用浏览器访问指定地址
			private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) {//绘制渐变色背景 Graphics g ... 
- linux lcd设备驱动剖析一
			s3c2440 lcd驱动源码文件是:drivers/video/s3c2410fb.c 看驱动源码首先当然是先看入口函数,这里是s3c2410fb_init函数 [cpp] view plain? ... 
- MFC 文档/视图
			1.文档修改后,关闭时需要保存,主要用到2个函数,在需要更改文档内容的函数里调用SetModifiedFlag(TRUE),另一个就是SaveModified()函数,简单的例子: BOOL CMFC ... 
- cs231n神经网络 常用激活函数
			CS231n课程笔记翻译:神经网络笔记1(上) 一.常用激活函数 每个激活函数(或非线性函数)的输入都是一个数字,然后对其进行某种固定的数学操作.下面是在实践中可能遇到的几种激活函数: ——————— ... 
- Activex感知网页刷新关闭事件
			原因 大多数ActiveX控件框架,例如MFC和ATL,在本地激活ActiveX控件时创建控件.基于性能上的考虑,直到控件第一次可见的时候,IE才本地激活ActiveX控件.这样包含ActiveX控件 ... 
- NUnit属性
			TestFixture:它标记一个类包含测试,申明该类是用来测试的.一般用在class的定义之前: Test一般是放在method之前,表示对该方法的测试:如前一篇文章所示的class. SetUp/ ... 
- Android P2P语音通话实现
			1.http://www.cnblogs.com/milospooner/archive/2012/07/13/2590950.html 2.http://my.oschina.net/sanshan ... 
- LED电视与液晶电视的区别
			[LED电视与液晶电视的区别] 目前LED电视全部是采用了LED背光的液晶电视,本质上而言,还是液晶电视.这与真正的LED电视是两个完全不同的概念.如今通常把LED背光电视称为LED电视,采用CCFL ... 
- c++多线程编程(三)
			关于WaitForSingleObject函数用法 : 用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法. 但是,用户模式的线程同步有限制,对于多个进程之间的 ... 
