c++ 数据类型

本文主要关于数据类型。面向对象编程的本质就是设计并扩展自己的的数据类型。

2022年 1月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

首先了解c++的内置数据类型 :基本类型和复合类型

基本类型:整形和浮点型 复合类型:数组、指针、字符串、结构 存储数据的方法:变量

  • 简单变量

变量命名规则:

如果想用多个单词组成一个名称,通常使用下划线字符将单词分开,如 my_onions,或者 从第二个单词开始将每个单词的第一个字母大写:myEyeTooth

  • 整型

不含小数的数字 0,-3 ,100。不同的整型使用不同的内存来存储整数。有符号和无符号类型分别表示正负数和正数

short int long longlong 通过不同数目的位存储值:(都是有符号数)

short 至少16位 :short x (short== short int)

int 至少与short一样长

long 至少32位,且至少与int一样长 (long == long int)

lonng long 之少64位,且至少与long一样长

sizeof 运算符,获得变量的所占字节,对于类型名 int等使用时,需要加括号: sizeof (int),如果是对于变量,可加可不加。

#include<iostream>
using  namespace std;
int main(){
    int x_collec =2;
    cout<<"x_collec is"<<sizeof(x_collec)<< endl;
}

初始化:

int year =2022 //如果知道变量初始值,建议定义时候赋初值。

c++11 初始化方法:将大括号用于单值变量,采用这种方法时候,=可以去掉

int x={3} or int x{3}

大括号中不含值默认为0 int z{}

头文件climits

climits定义了符号常量来并表示类型的限制: int n =INT_MAX;

  • 无符号类型

要创建无符号类型,只需要使用unsigned 来修改变量声明。

unsigned   short  x  
unsigned   int  x
unsigned   long  x       
  • char 类型 (也是整型)

char用于存储字符(字母和数字) char x =”M” ,实际上,计算机中存储的是对应的字符编码77,可以将x =x+1,char值位78,对应N,可以通过 (int)x强制转换为78

有些字符不能通过键盘直接输入,比如换行符不能用回车,因此,有了下面的转义字符:

char 占8bit,unsigned char 表示范围0-255, signed char 表示范围-128~127

c++11新增 char16_t char32_t, char16_t 无符号16位, char32_t 32位有符号数,使用前缀u表示 char16_t 类型的字符常量和字符串常量, 使用前缀U表示 char32_t 类型的字符常量和字符串常量 : char16_t ch=u’q’;

  • bool类型

布尔值 true or false,将非 0值解释为true,将0解释为false。字面值true和false都可以通过提升转换(不用显式强制转换)为 int类型,true转换为1,false转换为0。

  • const限定符

常量被初始化后就不能修改了 const int year =2022

const type name =value

浮点数

能够表示 带小数部分的数字

书写浮点数:

1、标准写法 12.34 22.3 0.12 8.0

2、E表示法 3.45E6 指的是3.45与1000000相乘结果,E6指的是10的6次方,6是指数,指数可以是正数也可以是负数。E可以写成e。

  • 浮点类型

三种:float 32位 double 64位 long double 128位,浮点数有精度限制。

float 只能保证6位精确位,double保证13位精确度。

cout所属的ostream类有一个类成员函数,能够精确的控制输出格式-字段宽度、小数位数、采用小数格式还是E格式等。后面会给出实现。

在程序中使用 浮点常量时候,默认会认为是double型,如果要指定类型,在常量后加后缀:

1.23f —-float型

1.23L —–long double

1.23 —-默认double 类型

c++ 算数运算符

加、减、乘、除、求模

除法:如果两个整数相除,结果会是一个整数(小数部分直接舍去),如果两个数中 有一个或两个是浮点数,则小数部分会被保留。(因为系统会将不同操作数进行自动准换成相同的类型)

类型转换

1、初始化和赋值进行的转换

比如赋值时 double x = 3.14f 将一个float型付给double ,如果将double付给float变量,可能会导致降低精度。int x =3.14f 最终x=3(直接丢弃小数部分)

0赋值给bool,会转换为false,非0值会变为true

2、算数运算时

变量提升:在计算表达式时c++将 bool、char、unsigned char 、signed char 和short 转换为int。

3、传递参数时转换

4、强制类型转换

首先要明确一点强制转换不会修改变量本身 ,而是创建一个新的、指定类型的值。

以下两种方法都可以:

(long) x 或者 long (x)

(typename) value type (value)

c++还引入了强制类型转换运算符: static _cast<typename> (value)

C++中的auto声明

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

typedef

C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。

typedef unsigned char BYTE;
在这个类型定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写
https://pixabay.com/photos/nature-winter-tree-season-outdoors-6891549/

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注