c++编程之数据类型

原创 2016年08月30日 14:55:58

       C++定义了表示整数、浮点数、字符和布尔值以及void的基本数据类型,算术类型的存储空间与机器有关,因为机器位数不同,这些类型所能表示的最大(最小)值也因机器的不同而有所不同。


类型+含义+最小存储空间如下:
  bool   布尔型

       char   字符型  8位

  wchar_t  宽字符型  16位

  short  短整型  16位

  int   整  16位

       long  长整  32位

  float  单精度浮点型  6为有效数字

  double  双精度浮点型  16位有效数字

  long double  扩展精度浮点型  16位有效数字


具体分析如下:
1、整数

一般认为short ,int  ,long为表示整数的类型;一般,short类型为半个机器字长int类型为一个机器字长,而long类型定义为不小于int类型,long long类型为8个字节

使用sizeof来看一下他们的结果:

cout << sizeof(short) << endl;
cout << sizeof(int) << endl;
cout << sizeof(long) << endl;
cout << sizeof(long long) << endl;
在当前电脑编译器下为: 2,4,4,8

因此,在当前编译器下,使用int和long是没有区别的。在使用时尽可能使用最合适的类型,short的使用可以减少存储空间,int的使用可以加快程序处理速度(一个机器字长),long long的使用是在int范围不足以表示时使用


unsigned int与int——在一起操作时,都会转换为无符号数,如下:

	unsigned int a = 100;
	signed int b = -130;
	
	if (a < b)
		printf("%u", b);

输出为: 4294967166    。在运算中,无符号数优先级要高于有符号数。


2、浮点数

浮点数常用的为 float,double与long double;具体使用需要根据编译器处理结果而定。

使用sizeof来看一下他们的结果:

cout << sizeof(float) << endl;
cout << sizeof(double) << endl;
cout << sizeof(long double) << endl;
在当前电脑编译器下为: 4,8,8
float与double的区别在于精度的不同,double精度高,有效位为16位,float精度为7位。

例如,在如下的example中的输出:

float l1 = 100.22222222222;
double l2 = 100.222222222222;

printf("%0.11f\n", l1);//输出为100.22222137451
printf("%0.11f\n", l2);//输出为100.22222222222
在高位机的某些处理器中,long double的大小可能为16字节,这个时候使用long double将得到更准确的精度。

在程序中,精度越高,处理器处理数据花费时间越多,程序执行速度越慢。

3、字符

字符有 char、wchar_t、char16_t、char32_t ;这些类型与字符集有关系,涉及unicode,utf-8,utf-16等,可通过一下链接来了解字符的出现及意义:

@于洋的经典论述  ————讲述了什么是字符集以及字符集是如何出现的,使用字符集的必要性

4、bool值

判断true与false的类型,可以认为ture就是1,false就是0.

cout << false << endl;	//输出为0
cout << true << endl;	//输出为1

5、void类型

void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。

使用void的意义在于:对函数返回的限定;对函数参数的限定

1、对于有些编辑器来说,不定义函数返回值是可编译的。使用void可增强代码的严谨性与可读性

test(){
        int a=10;
	return a;
}

在某些编译器下是可编译的... ... ;而 test(2)在某些编译器下是可执行的。 因此 int test(void) 的定义是必要的

2、注意void指针

按照ANSI标准,不能对void指针进行算法操作,即void * pvoid; pvoid++;是不合法的。

但是GNU标准则不一样,它指定void *的算法操作与char *一致。因此,使用 void *pvoid;(char*)pvoid++来实现兼容是必要的


void在c语言库中的经典使用:

void *memcpy(void *dest, const void *src, size_t n); //内存复制函数

任何类型的指针都可以传入memcpy中,而memcpy只是负责把src那一块的存储复制到dest区域中,复制本身与数据类型无关







C和C++编程语言数据类型

  • 2013年03月06日 13:12
  • 34KB
  • 下载

C++编程入门系列之八(自定义数据类型

C++编程入门系列之八(自定义数据类型)上两节中鸡啄米讲了编程入门知识-算法的选择结构和循环结构,这一讲鸡啄米给大家介绍下自定义数据类型。什么是自定义数据类型呢?大家记得像char、int、float...

C++编程入门系列之七(自定义数据类型)

上两节中鸡啄米讲了编程入门知识-算法的选择结构和循环结构,这一讲鸡啄米给大家介绍下自定义数据类型。        什么是自定义数据类型呢?大家记得像char、int、float等类型吗?这些都是C+...

C++编程入门系列之四(数据类型)

C++编程入门系列之四(数据类型)**基本数据类型:**5种**分别是:**bool(布尔型 )、char(字符型 )、int(整型 )、float(浮点型,表示实数 )、double(双精度浮点型)...

C++编程入门系列之三(数据类型)

C++是从C中发展来的,可以兼容C。所以C++的一些基本语法跟C几乎是一样的。         先给大家看下一个简单的C++程序。         #include           void ma...

Windows编程 常用数据类型转化及操作[转载]

1 数学类型变量与字符串相互转换(这些函数都在STDLIB.H里) (1)将数学类型转换为字符串可以用以下一些函数: 举例: _CRTIMP char * __cdecl _itoa(...
  • RitMan
  • RitMan
  • 2015年12月31日 15:21
  • 386

win api 编程中的数据类型

  • 2009年12月01日 11:31
  • 8KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++编程之数据类型
举报原因:
原因补充:

(最多只允许输入30个字)