c++数据

1.变量名

  命名规则:

  • 在名称中只能使用字母字符、数字和下划线;
  • 名称的第一个字符不能是数字;
  • 不能将C++关键词用作名称。

  常用的前缀:n-整数,str/sz-字符串,b-布尔值,p-指针,c-单个字符,m-类成员值

2.整形

  • short 至少16位;
  • int至少与short一样长;
  • long至少32位,且至少与int一样长;
  • long long至少64位,且至少与long一样长。

3.无符号类型

  当数值不会为负时,使用无符号类型,如人口等。要创建无符号版本的基本整型,只需要使用关键字unsigned来修改声明即可。如果short的表示范围为-32768到+32767,那么无符号版本的表示范围为0-65535,可见其优点是可以增大变量能够存储的最大值。

  类型如何选择:

  • 若变量表示的值不可能为负,则可以使用无符号类型,这样变量可以表示更大的值;
  • 若知道变量可能表示的整数值大于16位整数的最大可能值,则使用long。即使系统上int为32位,也要这样做。如果要存储的值超过20亿,可使用long long。
  • 若short比int小,则使用short可以节省内存。通常,仅当有大型整型数组时,才有必要使用short。如果节省内存很重要,则应使用short而不是使用int。例如,若将程序从int为16位的系统移到int为32位的系统,则用于存储int数组的内存量将加倍,但short数组不受影响。

  与int不同的是,char在默认情况下既不是没有符号,也不是有符号。如果char有某种特定的行为非常重要,则可以显式地将类型设置为signed char或unsigned char

4.const

一种常见的做法是将变量名称的首字母大写,以提醒这个变量是常量。或将整个变量名称大写,使用#define创建常量时通常使用这种约定 。

 

下表列出了七种基本的 C++ 数据类型:

布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型 wchar_t

 

 

 

 

 

 

一些基本类型可以使用一个或多个类型修饰符进行修饰:

  • signed
  • unsigned
  • short
  • long

下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。

注意:不同系统会有所差异。

类型范围
char 1 个字节 -128 到 127 或者 0 到 255
unsigned char 1 个字节 0 到 255
signed char 1 个字节 -128 到 127
int 4 个字节 -2147483648 到 2147483647
unsigned int 4 个字节 0 到 4294967295
signed int 4 个字节 -2147483648 到 2147483647
short int 2 个字节 -32768 到 32767
unsigned short int 2 个字节 0 到 65,535
signed short int 2 个字节 -32768 到 32767
long int 8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int 8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int 8 个字节 0 to 18,446,744,073,709,551,615
float 4 个字节 +/- 3.4e +/- 38 (~7 个数字)
double 8 个字节 +/- 1.7e +/- 308 (~15 个数字)
long double 16 个字节 +/- 1.7e +/- 308 (~15 个数字)
wchar_t 2 或 4 个字节 1 个宽字符

 

 

5.类型转换

c++自动执行很多类型转换

  • 将一种算术类型的值赋给另一种算术类型的变量时,c++将对值进行转换;
  • 表达式中包含不同的类型时,c++将对值进行转换;
  • 将参数传递给函数时,c++将对值进行转换。

c++11新增了一个工具,让编译器能够根据初始值的类型推断变量的类型。即auto

如 auto n = 100; //n是int型

 auto x = 1.5; //x是double型

在处理复杂类型,比如标准模块库(STL)中的类型时,自动类型推断的优势才能显现出来,如:在c++98中的代码

std::vector<double> scores;

std::vector<double>::iterator pv = scores.begin();

c++11允许将其写为:

std::vector<double> scores;

auto pv = scores.begin();

 

 

参考:《c++ primer plus》

posted @ 2018-12-19 19:48  AnselLi  阅读(287)  评论(0编辑  收藏  举报