您的位置:首页 > 游戏 > 游戏 > 正规的网站制作服务商_中国建筑人才培训网_长春seo关键词排名_seo指的是

正规的网站制作服务商_中国建筑人才培训网_长春seo关键词排名_seo指的是

2025/1/4 7:50:03 来源:https://blog.csdn.net/weixin_48524215/article/details/143651329  浏览:    关键词:正规的网站制作服务商_中国建筑人才培训网_长春seo关键词排名_seo指的是
正规的网站制作服务商_中国建筑人才培训网_长春seo关键词排名_seo指的是

1. C++变量和基本类型(一)

声明:以C++ Primer 第二章习题为基础学习C++变量和基本类型

1.1 练习2.1 不同类型数据的存储


下图来自:Memory Sizes of Fundamental Types

下图来自:number_representations

单精度浮点数float的格式结构

小数点前每位依次表示 2 0 2^0 20 2 1 2^1 21 ⋯ \cdots ,小数点后每位依次表示为 2 − 1 2^{-1} 21 2 − 2 2^{-2} 22 ⋯ \cdots

双精度浮点数double的格式结构

1.2 练习2.2 选择数据类型

1.3 练习2.3 混合类型数据的计算

#include <iostream>int main() {unsigned u=10, u2=42;std::cout << u2 - u << std::endl; // 32//由于 `u` 和 `u2` 是无符号整数,`-32` 会被解释为一个非常大的正数。//对于32位无符号整数,`-32` 等价于:2^32 - 32 = 4294967264std::cout << u - u2 << std::endl; // 4294967264int i=10, i2=42;std::cout << i2 - i << std::endl; // 32std::cout << i - i2 << std::endl; // -32//`i` 和 `u` 的类型不同。`i` 是 `int` 类型,而 `u` 是 `unsigned` 类型//在进行运算时,`int i` 会被转换为 `unsigned` 类型//`i` 被转换为 `unsigned` 类型,值为 10,计算 `10 - 10`,结果为 0std::cout << i - u << std::endl; // 0//`i` 被转换为 `unsigned` 类型,值为 10,计算 `10 - 10`,结果为 0。std::cout << u - i << std::endl; // 0return 0;
}

1.4 练习2.5 前后缀指定字面值的类型

(1) 'a', L'a', "a", L"a"
'a':字符a
L'a':宽字符型 (wchar_t) 字面值a
"a":字符串a
L"a":宽字符型字符串a

基础知识补充:
宽字符与普通字符

(2) 10, 10u, 10L, 10uL, 012, 0xC
10:整型int
10u:无符号整型unsigned int
10L:长整型long
10uL:无符号长整型unsigned long
012:八进制数
0xC:十六进制数
(3) 3.14, 3,14f, 3,14L
3.14:普通浮点类型字面值double
3.14f:单精度浮点数float
3.14L:扩展精度浮点数long double
(4) 10, 10u, 10. , 10e-2
10:整型int
10u:无符号整型unsigned int
10.:浮点数double
10e-2:科学记数法的浮点数,大小10*10^{-2}=0.1

1.5 练习2.6 八进制表示方法


1.6 练习2.7 转义字符及后缀指定字面值的类型

(1) "Who goes with F\145rgus?\012"
转移字符\145代表字符e,\012代表换行符
(2) 3.14e1L
科学记数法3.14*10^1的扩展精度浮点数long double
(3) 1024f 
单精度浮点float(做错了)
(4) 3.14L
扩展精度浮点数long double

注意:整数后如果要使用f表示为浮点数要加点

1.6 练习2.8 转义字符的使用

#include <iostream>int main() {std::cout << "2M" << '\012';std::cout << "2\tM"<< '\012';return 0;
}
=============
2M
2	M


1.7 练习2.9 变量定义与初始化

(a) std::cin >> int input_value;
输入时定义
int input_value;
std::cin >> input_value;
(b) int i = {3.14};
定义整型列表却初始化为浮点
double i = {3.14};
(c) double salary = wage = 9999.99;
wage未指定数据类型
double salary, wage;
salary = wage = 9999.99;
(d) int i = 3.14;
定义整型数却初始化为浮点数
double i = 3.14;

1.8 练习2.10 局部变量和全局变量

#include <iostream>
std::string global_str; //无论函数体内外,字符串均被初始化为空串
int global_int; //全局变量int被初始化为0
int main() {int local_int; //局部变量int被初始化为未定义值std::string local_str; //无论函数体内外,字符串均被初始化为空串std::cout << global_str << '\n'<< global_int  << '\n'<< local_int  << '\n'<< local_str;return 0;
}
=========//(空串)
0		//全局变量int被初始化为0
31985   //局部变量int被初始化为未定义值//(空串)

1.9 练习2.11 变量声明和定义

//定义 = 声明 + 初始化值
(a) extern int ix = 1024; //定义
(b) int iy; //声明(做错了),这里为声明并定义,因为被默认初始化了值
(c) extern int iz; //声明

基础知识补充:
在C++中,关键字 extern 的主要作用是声明一个变量或函数在其他文件或作用域中已定义,从而让当前文件或作用域可以访问它。具体来说,extern 用于告知编译器变量或函数的定义在其他地方,这样可以在多个文件之间共享变量或函数的定义

1.10 练习2.12 标识符的命名规则

(a) int double = 3.14
不能使用关键字作为变量名
(b) int _; 
不能使用特殊字符作为变量名 (做错了,应该是合法的)
(c) int catch-22;
要用下划线
(d) int 1_or_2 = 1;
变量名不以数字开头
(e) double Double = 3.14;
变量首字母小写 (做错了,应该是合法的)

标识符中只能出现 “a A 1 _”
标识符中开头必须是 “a” 或 “A” 或 “_”

1.11 练习2.13 局部作用域和全局作用域

#include <iostream>
int i = 42; //global
int main() {int i = 100;int j = i; //localstd::cout << j ;return 0;
}
============
100


#include <iostream>
int i = 42; //global
int main() {int i = 100;int j = ::i; //明确指定使用全局变量istd::cout << j ;return 0;
}
============
42

基础知识补充:
在C++中,全局作用域和局部作用域是指变量的可见性和生命周期范围。全局作用域的变量可以在程序中的任何地方使用(如果通过适当的声明)。局部作用域的变量则仅在定义它的代码块(如函数或代码块 {} 内)中可见,且在代码块结束时会销毁。

1.12 练习2.14 嵌套作用域中变量的定义与使用

#include <iostream>int main() {int i = 100, sum = 0;// 这里的 `for` 循环中定义了一个新的变量 `i`// 这个 `i` 仅在 `for` 循环内部可见,并遮蔽了外层作用域的 `i`for (int i = 0; i != 10; i++)  // 这个 `i` 是 `for` 循环的局部变量sum += i;  // 累加 `for` 循环内的 `i` 的值(0 + 1 + ... + 9)// `for` 循环结束,循环内的 `i` 不再可见// 输出外层的 `i` 和 `sum`std::cout << i << " " << sum << std::endl;return 0;
}
=============
100 45

基础知识补充:
在C++中,嵌套作用域允许在内层代码块中定义与外层同名的变量。内层作用域中的变量会遮蔽外层作用域中的同名变量,这意味着在内层作用域中只能访问内层定义的变量,而无法直接访问外层同名变量

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com