• C++ Primer : 第二章:变量和基本类型(1)


    变量和基本类型之第一篇:基本内置类型和变量

    一、

    (1)

    C++定义了一套包括算数类型和空类型,这些类型有:布尔类型bool,字符类型char,宽字符类型wchar_t,Unicode字符char16_t,Unicode字符char32_t,短整型short(int),

    整形int,长整形long(int),长整形long long(int),单精度浮点型float,双精度浮点型double,扩展精度浮点数long double。


    其中,wchar_t、char16_t、char32_t用于扩展字符集。wchar_t确保可以存放机器最大扩展字符集中的任意一个字符,类型char16_t和char32_t则为Unicode字符集服务(Unicode是用于表示所有自然语言中字符的标准)。


    对于整形,C++语言规定:一个int至少应该和short int一样大,一个long应该至少和int一样大(在32位的机器上两者通常是一样大的),一个long long int至少和一个long一样大(long long int 是在C++ 11中新定义的)。


    内置类型的机器实现:

    计算机以比特序列存储数据,每个比特非0即1。大多数计算机以2的整数次幂个比特作为块来处理内存,可寻址的最小内存块称为"字节(byte)",存储的基本单元称为"字(word)",通常有几个字节组成。C++中,一个字要至少能容纳机器基本字符集中的字符。大多数机器的字节由8个比特组成,字则由4个字节或8个字节组成。计算机将内存中的每个字节与一个数字(地址)关联起来。


    浮点型可表示单精度、双精度和扩展精度值,C++标准定义了一个浮点数的有效位数的最小值。通常,float以1个字节(32byte)来表示,double以两个字来表示,long double以3个或4个字来表示。float和double分别有7个和16个有效位。


    (2)类型转换

    把其他类型的值转换为bool值的时候,当值为0时bool为false,当值不为0时bool等于true;把一个bool值转换为整型时,true被翻译为1,false被翻译为0;把浮点数赋值给整形时,仅保留小数点之前的值;把一个整型值赋值给浮点型时,小数部分记0;当给一个无符号类型赋值一个超出它表示的类型时,结果是初始值对无符号类型表示数值总数取模后的余数。例如,unsigned char可以表示0~255区间的值,如果把-1赋值给一个unsigned char类型变量,则实际的结果时该值对256取模后的余数,为255。

    例如:

    unsigned u = 10;
    int i = 42;
    
    // 输出84
    std::cout << i + i << std::endl;
    
    // 如果int占32位,输出4294968264
    std::cout << u + i << std::endl;


    在第一个输出表达式里,两个负整数类型一样,相加得到了期望的结果,而第二个表达式在相加前,先把整型-42转换为无符号数,把负数转换成无符号数结果等于这个负数加上这个无符号数的模。

    另外,当从无符号数中减去一个值时,不管这个值是不是无符号数,我们都必须保证结果是一个无符号数。


    二、字面值常量

    每个字面值常量都对应了一种数据类型。

    这三个数分别用十进制、八进制和十六进制来表示了整型字面值常量20:

    20  /* 十进制 */        024  /* 八进制 */   0x14    /* 十六进制 */


    对于浮点型字面值常量,默认为double型。


    'a' /* 字符字面值 */

    "a" /* 字符串字面值 */


    字符串字面值的类型实际上是由常量字符构成的数组,字符串由''结尾,因此数组的长度也要至少比字符串字面值的长度大1。


    std::cout << "hello world"
                         "I love you"
                    << std::endl;


    另外,字符串字面值可以分多行书写,如果两个字符串字面值位置紧邻且仅有空格、缩进和换行符分隔,则它们实际上是一个整体。

    我们还可以指定字面值类型,比如:L‘a’  /* 宽字符字面值 */



    三、变量

    C++在定义变量时赋值叫初始化,在定义之后再赋值才算真正的赋值,所以赋值和初始化并不一样。初始化的含义是创建变量是赋予其一个初始值,而赋值的含义是把对象的当前的值擦除,用一个新值来替代。


    C++初始化方式:

    inthello =0;

    inthello ={0};

    int hello(0);

    int hello{0};

    最后一种是C++11的新标准,列表初始化。


    默认初始化:

    定义在函数内部、块内部的内置变量,不予以默认初始化,定义在全局中的变量被默认初始化为0。


    变量可以声明多次,但只能被定义一次。

    extern int i;     // 声明i而非定义i

    int j;// 声明j并定义j


    通常,我们在第一次使用变量的地方再定义它是一种比较好的选择。



























































  • 相关阅读:
    root用户没有权限编辑其他用户处理
    php中 被遗忘的函数
    erlang file操作(IO编程)
    Linux下的MySQL自动备份脚本
    这就是传说中让理科生沉默,让文科生落泪的文理综合体(转)
    LINUX 忘记root密码
    php中 被遗忘的函数
    分页显示的常用操作方法
    php 接口类:interface
    php垃圾回收机制分析
  • 原文地址:https://www.cnblogs.com/averson/p/5096079.html
Copyright © 2020-2023  润新知