三九宝宝网宝宝百科宝宝知识

c++数据类型及复杂声明推演

12月14日 编辑 39baobao.com

[C++技巧:OpenCASCADE智能指针的使用]学习OCC的第一步是要了解其类的结构及组成,比如AIS_InteractiveObject类用来表示一个交互 式图形对象,如果进一步了解会发现其继承关系是:MMgt_TShared->Standard_Transient->P...+阅读

数据类型

c++程序员已经知道c语言有五种数据类型:void,int,float,double和char:

类型 描述

void 无数据类型

int 整数类型

float 浮点数

double 双精度浮点数

char 字符型

c++有额外定义了两种类型:bool和wchar_t:

类型 描述

bool 布尔变量,true或者false

wchar_t 宽字符

类型修饰符

这几个类型中的部分可以使用以下几个关键字来修饰:signed,unsigned,short和long. 如果只有类型修饰符自己被使用,则数据类型会被缺省地认为int.下面是一个完整的列表列出了可能的数据类型(等效的会被显示在同一行,并且用,隔开)

整数类型

bool

char, signed char

unsigned char

short, short int, signed short int

unsigned short, unsigned short int

int, signed int

unsigned, unsigned int

long, long int, signed long, signed long int

unsigned long, unsigned long int

浮点类型

float

double

long double

可选支持的整数类型

long long, signed long long, long long int, signed long long int

unsigned long long, unsigned long long int

wchar_t

类型的大小和范围

任何一种数据类型的大小和范围都是编译器相关的. 头文件"cfloat"(或者"float.h")经常定义了各种数据类型的最小值.你可以使用操作符sizeof来测试任何一种数据类型的大小(这里的大小是指该类型的变量说占用的空间大小,即占用的字节数).然而,很多的系统会依据某一标准来实现数据类型.整型和浮点型通常是32位,字符8位,双精度64位.布尔变量则常会是8位.long long类型是64位.

数字值的限制是定义在头文件里. 模板化的类numeric_limits提供了系统相关的c++数据类型的表现。 使用适当的函数并且以数据类型作为模板参数可以返回一些需要的信息。需要注意的是mumeric_limits是可以被用户定义的类型重载。

下面是一些相关的函数(译者:其实有些是静态成员变量,至少在dev-c++里如此):

方法 返回类型 描述

is_specialized bool

radix int 指数的底

digits int 尾数中的基数位数

digits10 int 尾数中的10进制数位数

is_signed bool

is_integer bool

is_exact bool

min 可以表示的最小数(不是负的最小数)

max 数

epsilon 固有误差

round_error 取正误差(即四舍五入就是0.5)

infinity

quiet_NaN 不能标示浮点错误的无效数字

signaling_NaN 标示浮点错误的无效数字

denorm_min

min_exponent int

min_exponent10 int

max_exponent int

max_exponent10 int

has_infinity bool

has_quiet_NaN bool

has_signaling_NaN bool

has_denorm _denorm_style

has_denorm_loss bool

is_iec559 bool 遵照IEC-559规范

is_bounded bool

is_modulo bool

traps bool

tinyness_before bool

round_style float_round_style { round_to_nearest, … } float_round_style是一个枚举类型,具体可以参考

最通常的用法就是边界检查来确认某一数据类型可以表示的最小值。接下来的代码打印出了该系统平台上short类型的最值:

#include

std::cout

以下为关联文档:

VC++字体通用的类#include "stdafx.h" #include "font.h" COleFont properties CString COleFont::GetName() { CString result; GetProperty(0x0, VT_BSTR, (void*) return result; } void...

C++技巧:emacs完美的C++的自动补全1,CVS cedet的最新代码,1.04代码补全很慢。 cvs -z3 -d:pserver:anonymous#cedet.cvs.sourcefe.:/cvsroot/cedet co -P cedet 2,命令行运行 touch `find -name "Makefile"` (注...

解决VC++程序国际化的类,解决乱码问题#include "stdafx.h" #include "global.hpp" Deion: generate an error message int Error(long err, char *fmt, ...) { static char buf[256]; static char buf2[256]; va...

使用VC++6关闭指定窗口标题的程序常常听说有病毒关闭杀毒软件,是枚举窗口标题来实现的,那么内幕是什么呢? 其实只需要数10行代码就可以了。 VC++6.0建立Win32 APPlication,复制下面的代码... #include BOOL CALL...

二级考试C++基础:volatile的使用方法volatile的本意是一般有两种说法--1.“暂态的”;2.“易变的”。 其实Volatile是由于编译器优化所造成的一个Bug而引入的关键字。 int a = 10; int b = a; int c = a; 理论上...

C++中使用断点写调试方法C/C++ code: f9 --- 设置/取消断点 f10 --- 单步执行 f11 --- 比f10的步幅小,f10在函数的调用时,直接跳过,在f11下,会进入函数体! f5 --- 执行到下一个断点! 了解调试,首先要知道"...

c++读写剪贴板代码代码如下: 写: if(OpenClipboard()) { CString str; HANDLE hClip; char *pBuf; EmptyClipboard(); str="879789789"; hClip=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);...

C++实例:sgistlconfigstl_config.h 由于不同的编译环境对标准C++的支持不完全相同,出于移植性的考虑,SGI STL定义了这个文件。它通过条件编译针对不同的编译器作了部分常数设定,对编译器的设定如下:...

C++基础:有趣的#define的一个实例看了一下google CoverStory的代码,有一个地方很有意思: These are the various document types used by CoverStory. Included in both Obj-C and plist sources. A little ma...

推荐阅读
图文推荐