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 << "2115" << ' '; std::cout << "2 115" << ' '; 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; // 类的默认初始化由自己决定:空字符串 }
为什么不是“但凡没有初始化的变量都进行默认初始化”呢?