zoukankan      html  css  js  c++  java
  • C++_基础1-基本数据类型

    面向对象(OOP)的本质是设计并扩展自己的数据类型。设计自己的数据类型就是让类型与数据匹配。

           如果正确做到这一点,就会发现以后使用数据会容易很多。然而创建自己的类型之前,必须了解并理解C++内置类型。这些类型是创建自己类型的基本组件。

           内置C++类型分两组:基本类型复合类型

           基本类型:整数和浮点数

           复合类型:数组、字符串、指针和结构

           程序还需要一种标识存储的数据的方法——使用变量

           如何在C++中进行算术运算

           C++如何从一种类型转换到另一种类型。

    ========================================

    简单变量

    程序存储数据必须记录3个基本属性

    信息将存储在哪里

    要存储什么值

    存储何种类型的信息

    变量名

    命名规则

           两个下划线或下划线和字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。

    命名风格

           变量名前加上描述变量类型或内容的前缀。

    整型

           整数是没有小数部分的数字。

           宽度(width)用于描述存储整数时使用的内存量。

           整数类型按宽度递增:char、short、int、long和C++11新增的long long。其中每种类型都有有符号版本和无符号版本,因此总共有10种类型可供选择。

           char类型有一些特殊属性,它最常用于表示字符,而不是数字。

    整型short、int、long和long long

           计算机内存由一些叫做(位)的单元组成。short、int、long和long long类型通过使用不同数目的位来存储值。在不同计算机这些类型的宽度不是固定的。C++提供了一种灵活的标准。

    short至少16位

    int至少与short一样长

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

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

     

    计算机的基本内存单元为:位

    字节通常指8位的内存单元。从这个意义上讲,字节指的是描述计算机内存量的度量单位。C++对字节的定义不同,C++字节至少能够容纳实现的基本字符集的相邻位组成。也就是其可能取值的数目必须等于或超过字符数目。例如ASCII字符集,它们都可以用8位来容纳。国际编程使用更大的字符集,如Unicode,因此有些实现可能使用16位或32位字节。有些人使用术语八位组来表示8位字节。

     

    要知道系统中整数的长度,可以在程序中使用C++工具来检查类型的长度。

    sizeof运算符返回类型或变量的长度。单位为字节。

    运算符是内置的语言元素,对一个或多个数据进行运算,并生成一个值。

     

    运算符sizeof和头文件climits

           头文件climits定义了符号常量来表示类型的限制。

     

    初始化

           初始化将赋值和声明合并在一起。

           如果不对函数内部定义的变量进行初始化,该变量的值将是不确定的。这意味着该变量的值将是它被创建之前,相应内存单元保存的值。

           在声明时对变量进行初始化是个好习惯,可以避免以后忘记对它赋值的情况发生。

    C++的初始化方式

           还有另一种初始化方式,用于数组和结构。但在C++98中,也可用于单值变量。

           大括号初始化器,不仅可以用于数组和结构,也可以用于单值,例如:

           int enus{7} ; //不使用等号

           int reheas = {12};

           int rocs = { }  //大括号内不包含任何东西,在这种情况下,变量将被初始化为零

    无符号类型

    前面介绍的4种整型都有一种不能存储负数值的无符号变体。其优点是可以增大变量能够存储的最大值。

           要创建无符号版本的基本整型,只需使用关键字unsigned来修改声明即可。

    unsigned short change;

    unsigned int revoer;

     

    unsigned 本身是unsigned int的缩写

    选择整型类型

    int被设置为目标计算机而言最为“自然”的长度。

    自然长度指的是计算机处理起来效率最高的长度。如果没有非常有说服力的理由来选择其他类型,则应使用int。

           如果表示的值不可能为负,则可以使用无符号类型,这样变量可以表示更大的值。

     

    整型字面值

           整型字面值(常量)是显式地书写的常量。

           C++能够以三种不同的计数方式来书写整数:基数为10,基数为8(老式UNIX版本),基数为16(硬件黑客的最爱)。

          

    C++如何确定常量的类型

    后缀:数字常量后面的字母,用于表示类型

    例如整数后面的l和L后缀表示该整数位long常量。

    U或u后缀表示unsigned int常量。

    char类型:字符和小整数

    char类型是专为存储字符而设计的。

    存储字母:编程语言通过使用字母的数值编码解决了这个问题。

    char类型是另一种整型,它能够表示目标计算机系统中的所有基本符号——字母、数字、标点符号。

     

    最常用的符号集是ASCII字符集。字符集中的字符用数值编码(ASCII码)。

     

    程序说明

    char ch = ‘M’;

    int I = ch;

    cout.put(‘!’)

     

    成员函数

    成员函数归类所有,描述了操纵类数据的方法。

    只能通过类的特定对象来使用成员函数。

    必须使用句点将对象名和函数名称连接起来。

    句点被称为成员运算符

    cout.put()的意思是:通过类对象cout来使用成员函数put()

    使用cout.put()函数有历史原因。早期的C++,cout将字符变量显示为字符,而将字符常量显示为数字。所以cout.put()能够正常显示字符常量。

    后来cout可以正常处理字符常量了。

     

    char字面值

    ‘A’ 即字符A的ASCII码

    这种表示法由于数值编码,用户不需要知道编码方式。如果系统使用的是EBCDIC,则A的编码将不是65,但是‘A’表示的仍然是字符A。

    C++提供了一种特殊表示方法——转义序列,来表示难以用键盘表示的特殊字符。

     

    还可以基于字符的的八进制和十六进制编码来使用转义序列。

    通用字符名

     

     

    signed char和unsigned char

    char作为数值类型,则unsigned char和signed char之间的差异将非常重要。unsigned char类型表示范围通常为0~255。signed char表示范围-128~127。

           char来存储标准ASCII字符,则char有没有符号都没有关系。

          

    wchar_t 

           8位char可以表示基本字符集

           wchar_t可以表示扩展字符集(宽字符类型);wchar_t是一种整数类型,它有足够的空间,可以表示系统使用的最大扩展字符集。

           cin和cout将输入和输出看成是char流。因此不适合用来处理wchar_t类型。Iostream头文件的最新版本提供了作用相似的工具——wcin和wcout,可用于处理wchar_t流。

           另外可以使用前缀L来指示宽字符常量和宽字符串

           wchar_t =L‘P’;

           wcout << L”tall”<<endl;

          

    此外还有char16_t和char32_t类型,这两种类型都是无符号整数类型。它们都有底层类型内置的int整型。

    bool类型

    C++标准添加了一种名叫bool的新类型。布尔变量的值可以是True或False。

    C++将非零值解释为true,将零解释为false。

    现在可以用布尔类型来表示真假了,所以可以用字面值true来表示真,字面值false来表示假。

    ========================================

    const限定符

    C++有一种更好的处理符号常量的方法,使用const来修改变量声明和初始化。

    const int Months =12;  //初始化之后就再也不能被修改了

    Months初始化后,编译器将不允许再修改该常量的值了。Const相当告诉编译器,被它修饰的变量不能再被更改了。

    ========================================

    浮点数

    程序员只需要了解:浮点数能够表示小数、非常大和非常小的值。

    它的内部表示方法和整数有天壤之别。

    浮点类型

    float、double、long double;

    有3个

     

    浮点常量

    默认程序把浮点常量存储为double类型;

    如果希望改成float类型,使用f或F后缀;

    如果希望改成long double类型,使用l或L后缀;

     

    浮点数的优缺点

    浮点数有两大优点,首先它可以表示整数之间的值。其次,由于有缩放因子,它可以表示的范围大得多。另一方面,浮点运算符的速度通常比整数运算慢,而且精度也将降低。

     

    整数和浮点类型都被称为算术类型。

    ========================================

    C++算术运算符

    C++使用运算符来运算;提供了几种运算符来完成5种基本的算术运算;

    加法、减法、乘法、除法以及求模;

    每种运算符:都使用两个值(操作数)来计算结果。

    运算符和操作数构成了表达式

    + 加法

    - 减法

    * 乘法

    / 除法  得到模,19/6为3

    % 取余  19%6为1

    运算符的优先级和结合性

    除法分支

    除法的行为取决于操作数的类型。如果两个操作数都是整数,则C++将执行整数除法。这意味着结果的小数部分将被丢弃,使得最后一个结果为整数。如果其中有一个(或两个)操作数是浮点值,则小数部分将保留,结果为浮点数。

    求模运算符

     

    类型转换

    要了解在哪些情况下会发生类型转换,类型转换的结果是什么。

    将一种算术类型赋值给另一种算术类型的变量时,C++将对值进行转换;

    表达式中包含不同的类型时,C++将对值进行转换;

    将参数传递给函数时,C++将对值进行转换;

     

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

    C++允许将一种类型的值赋值给另一种类型的变量。这样做,值将被转换为接受变量的类型。

    2、 以{ }方式初始化时进行的转换(C++11)

     

    3、 表达式中的转换

     

    4、 传递参数时的转换

     

    5、 强制类型转换

    强制类型转换机制显式地进行类型转换

    通用格式:

    (typename)  value  //C语言风格

    typename  (value)  //C++语言风格

    ========================================

    总结

    1、C++的基本类型分为两组,一组由存储为整数的值组成,另一组由存储为浮点格式的值组成。

    2、wchar_t类型,用于扩展字符集

    3、浮点类型可以表示小数值,以及比整型能够表示的值大得多的值。

    4、C++使用运算符来提供对数字类型的算术运算

    5、对变量赋值,使用不同类型运算时,使用强制类型转换时,C++把值从一种类型转换为另一种类型。很多类型转换都是“安全的”。即可以在不损失和改变数据的情况下完成转换。对于其他一些转换,如将浮点类型转换为整型,则需要更加小心。

  • 相关阅读:
    Springboot打包成WAR包独立布署后找不到静态js文件
    layui实现数据分页功能(ajax异步)
    layer.prompt(options, yes)
    layer回调函数
    Html中的position:absolute的意思
    SQL基础-DML
    mysql的pager命令
    由于rngd进程导致的tomcat 启动慢
    elasticsearch安装
    zookeeper的observer模式
  • 原文地址:https://www.cnblogs.com/grooovvve/p/10467783.html
Copyright © 2011-2022 走看看