Visual Studio2010新特性--C++王者归来(2)--安全数据类型safeint
2010-03-11 03:48
441 查看
VC++2010在c++语言里面增加了一个特殊的新特性,safeint是一种安全数据类型,
能够保证运算是安全的,使用安全数据类型能够够规避软件异常,以及软件测试检测的
常规性很多错误,具体安全数据类型的请见代码演示,
代码由vc++2010调试通过!备有详细的注释!
欢迎vc++2010技术交流,需要源码请在CSDN博客留言留下Email
本文作者专著《Visual C++2010开发权威指南》即将推出,敬请关注,Visual C++2010最近技术,Windows7开发最新技术!
能够保证运算是安全的,使用安全数据类型能够够规避软件异常,以及软件测试检测的
常规性很多错误,具体安全数据类型的请见代码演示,
代码由vc++2010调试通过!备有详细的注释!
#include "stdafx.h" #include <safeint.h> #include <iostream> using namespace std; using namespace Microsoft::Utilities; class CMySafeIntException : public SafeIntException { public: static void CMySafeIntException::SafeIntOnOverflow() { cout << "捕获SafeInt溢出异常!" << endl; } static void CMySafeIntException::SafeIntOnDivZero() { cout << "捕获SafeInt被零除!" << endl; } }; int _tmain(int argc, _TCHAR* argv[]) { while (1) { unsigned int a, b; cout << "输入前8位无符号整数: "; cin >> a; cin.ignore(); cout << "输入第二个8位无符号整数: "; cin >> b; cin.ignore(); // 添加两个变量 cout << "添加两个数字的8位整数:" << endl; // 新增两个整数使用正常调用 unsigned __int8 i1 = a; unsigned __int8 i2 = b; cout << " 标准运算,结果="; unsigned __int8 iResult = i1 + i2; cout << (int)iResult << endl; // 新增两个整数使用SafeInt对象 SafeInt<unsigned __int8, CMySafeIntException> si1(i1); SafeInt<unsigned __int8, CMySafeIntException> si2(i2); cout << " Using SafeInt objects, result="; SafeInt<unsigned __int8, CMySafeIntException> siResult = si1 + si2; cout << (int)siResult << endl; // 整数相除 cout << endl << "整数相除:" << endl; // 两个整数正常除法 cout << " 标准运算,结果="; if (i2 != 0) // Prevent a crash! { iResult = i1 / i2; cout << (int)iResult << endl; } else cout << "中止因为除以零." << endl; //两个整数除以使用SafeInt对象 cout << " 使用SafeInt对象, 结果="; siResult = si1 / si2; cout << (int)siResult << endl; cout << endl << endl; } return 0; }
欢迎vc++2010技术交流,需要源码请在CSDN博客留言留下Email
本文作者专著《Visual C++2010开发权威指南》即将推出,敬请关注,Visual C++2010最近技术,Windows7开发最新技术!
相关文章推荐
- Visual Studio2010新特性--C++王者归来(1)--数据类型自动类型判别
- 枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。
- 如何在C++中方便的将float、int等类型数据转换成string类型,并利用ROS中的std_msg/String发布出去
- C++中数据类型int, short, long, long long的数据范围
- 定义一个不受计算机字长限制的整数类INT,要求INT与INT以及INT与C++基本数据类型int之间能进行+、-、×、÷和=运算,并且能通过cout输出INT类型的值。(持续添加)
- C++中string,char,int,double等数据类型的相互转换及与ASCII码的转换
- C/C++——求下面数据类型的最大值和最小值: char, short, int, long, float, double, long double和numeric_limits使用
- C\C++中int、double等数据类型范围的理解
- C/C++ int、long、double、char等各种内置数据类型的表示范围(最大最小值)
- C/C++中各种数据类型 如 int ,char long,double 的范围(最大值和最小值)
- 如何在C++中方便的将float、int等类型数据转换成string类型,并利用ROS中的std_msg/String发布出去
- C/C++: short , int , long , long long数据类型选用
- 关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围
- 有关C++的数据类型(int,long,short,float,double等等)
- 关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围
- C++ bool,char,short,int,long,float,double数据类型大小以及数据溢出值求解
- C/C++语言中计算int,float,double,char四种数据类型所能表示的数据范围
- C++如何在程序运行中获得int等数据类型的最大值
- C/C++语言中的int等基本数据类型所能表示的最大值最小值
- 【C++注意事项】1 数据类型及类型转换