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++把值从一种类型转换为另一种类型。很多类型转换都是“安全的”。即可以在不损失和改变数据的情况下完成转换。对于其他一些转换,如将浮点类型转换为整型,则需要更加小心。

  • 相关阅读:
    Oracle 按一行里某个字段里的值分割成多行进行展示
    Property or method "openPageOffice" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by
    SpringBoot 项目启动 Failed to convert value of type 'java.lang.String' to required type 'cn.com.goldenwater.dcproj.dao.TacPageOfficePblmListDao';
    Maven 设置阿里镜像
    JS 日期格式化,留作参考
    JS 过滤数组里对象的某个属性
    原生JS实现简单富文本编辑器2
    Chrome控制台使用详解
    android权限(permission)大全
    不借助第三方网站四步实现手机网站转安卓APP
  • 原文地址:https://www.cnblogs.com/grooovvve/p/10467783.html
Copyright © 2011-2022 走看看