c++第五天:默认初始化

1、算数类型。(整型和浮点型)

类型决定了数据所占的比特数以及该如何解释这些比特的内容。

练习2.1。。。 各种类型在计算机中所占的比特数不同,解释方法不同。有符号要花费一个比特存储符号,最大正值要比无符号的小。

float和double就在计算机内所占比特数量而言通常分别为32位和64位,就解释后的精度而言分别有7个和16个有效位,ps:通常,执行浮点数运算选用double,整数运算选int 或者 long long

练习2.2 全部无符号的double?

2、类型转换。关于-1%256=255,一个负数B对一个正数A取模,在B上加A,直到B变成正数,然后再对A取模。

参考:http://bbs.csdn.net/topics/390837091

 

练习2.3 32 42949672** 32 -32 0 0

练习2.4

D:\lab_>prog1
32
4294967264
32
-32
0
0

3、字面常量

 

练习 2.6 十进制和八进制的区别。 09作为八进制是不合法的,无法编译。

练习 2.7

 

#include<iostream>

int main()
{
    // std::cout << "2\115" << '\n';
    std::cout << "2\t\115" << '\n';
    return 0;
}

 

4、变量定义

比较关键的地方:变量的概念。 区分初始化与赋值。

值得关注的地方: 列表初始化。(用花括号来初始化变量, 若初始值存在丢失信息的风险, 则编译器将报错)

以及: 未被显式初始化的情况

——> 默认初始化:内置类型变量分两重情况(由位置决定)分别为 0 或 未定义,类由自己决定。

练习 2.9

#include<iostream>

int main()
{
    std::cin >> int input_value;      // 不可编译。
    int i = { 3.14 };                 // 可编译。编译器不报warning。精度丢失。 ps:相当于 i = 3.14?
    int i{3.14}                       // 可编译。编译器报warning。精度丢失。
    double salary = wage = 9999.99;   // 不可编译。
    int i = 3.14 ;                    // 可编译。编译器不报warning。精度丢失。
    return 0;
}

练习 2.10

#include<iostream>

std::string global_str;     // 类的默认初始化由自己决定:空字符串
int global_int;                // 内置类型的初始化由位置决定: 0

int main()
{
    int local_int;            //内置类型的初始化由位置决定: 不被初始化, 尝试输出是4201131
    std::string local_str;     // 类的默认初始化由自己决定:空字符串
}

 为什么不是“但凡没有初始化的变量都进行默认初始化”呢?

posted @ 2017-01-12 10:17  xkfx  阅读(211)  评论(0编辑  收藏  举报