C++ Primer Plus 笔记: 2023.06.09 AND 2023.06.12

文章介绍了C++编程的基础知识,包括温度转换函数,天文单位计算,以及时间显示。讨论了面向对象编程的核心——设计自定义数据类型,并阐述了程序存储信息需考虑的三个方面。同时,提到了C++中的数据类型宽度,如char、short、int等,以及预处理器的作用,如#define和头文件的使用。还讨论了变量初始化、符号常量、无符号整型的优势以及何时选择long类型。
摘要由CSDN通过智能技术生成

第二章编程题(继续):

(5)

#include<iostream>
using namespace std;

double Fahrenheit(double celsius);

int main()
{
	cout << "Please enter a Celsius value:	";
	double celsius;
	cin >> celsius;
	cout << celsius << " degrees Celsius is " << Fahrenheit(celsius) << " degrees Fahrenheit." << endl;
}

double Fahrenheit(double celsius)
{
	return (1.8*celsius + 32.0);
}

(6)

#include<iostream>
using namespace std;

double astronomy(double lightyear);

int main()
{
	cout << "Enter the number of light years: ";
	double lightyear;
	cin >> lightyear;
	cout << lightyear << " light years = " << astronomy(lightyear) << " astronomical units." << endl;
}

double astronomy(double lightyear)
{
	return lightyear*63240;
}

(7)

#include<iostream>
using namespace std;

void Time(int hour, int minute);

int main()
{
	cout << "Enter the number of hours: ";
	int hour;
	cin >> hour;
	cout << "Enter the number of minutes: ";
 	int minute;
	cin >> minute;
	Time(hour, minute);
	return 0;
}

void Time(int hour, int minute)
{
	cout << "Time:	" << hour << ":" << minute << endl;
}

下面开始搞第三章。

1.面向对象编程(OOP)的本质是设计并扩展自己的数据类型。

2.为了把信息存储在计算机中,程序必须记录3个基本属性:
(1)信息将存储在哪里?
(2)要存储什么值?
(3)存储何种类型的信息?

3.以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用,以一个下划线开头的名称被保留给实现,用作全局标识符。使用像_time_stop或_Donut这样的名称不会导致编译器错误,而会导致行为的不确定性。不出现编译器错误的原因是,这样的名称不是非法的,但要留给实现使用。

4.术语宽度(width)用于描述存储整数时使用的内存量,使用的内存越多,则越宽。C++的基本整型按宽度递增的顺序排列分别是char,short,int,long和C++ 11新增的long long,其中每种类型都有符号版本和无符号版本。

5.short至少16位;int至少和short一样长;long至少32位,且至少与int一样长;long long至少64位,且至少与long一样长。

6.对类型名(int)使用sizeof运算符时,应将名称放在括号中,但对于变量名(比如n_short)使用该运算符时,括号是可选的,如下:

cout << "int is " << sizeof (int) << " bytes.\n";
cout << "short is " << sizeof n_short << " bytes.\n";

7.在C++编译过程中,首先将源代码传递给预处理器。在这里,#define和#include一样,也是一个预处理器编译指令。该编译指令告诉预处理器:在程序中查找INT_MAX,并将所有的INT_MAX都替换成32767,因此#define编译指令的工作方式与文本编辑器或字处理器中的全局搜索并替换命令相似。

8.预编译器查找独立的标记(单独的单词),跳过嵌入的单词。也就是说,预处理器不会把PINT_MAXTM替换为P32767TM。

9.C++有一种更好的创建符号常量的方法(使用关键字const),所以不会经常使用#define。然而有些头文件,特别是那些被设计成可用于C和C++中的头文件,必须使用#define。

10.C++还有一种C语言没有的初始化语法:

int wrens(432);
cout << wrens << endl ;

结果就是432.

11.如果不对函数内部定义的变量进行初始化,该变量的值将是不确定的。这意味着该变量的值将是它被创建之前,相应内存单元保存的值。

12.在C++中,大括号还能用在对单值变量的初始化中,就像下面的这几个例子:

int hamburgers = { 24 } ;  // set hamburgers to 24
int emus { 7 } ;		   // set emus to 7
int rheas = { 12 } ;       // set rheas to 12  

其次,大括号里可以不包含任何东西,在这种情况下,变量将被初始化为0,如下:

int rocs = {};	// set rocs to 0
int psychics{}; // set psychics to 0

13.整型的无符号变体的优点是可以增大变量能够存储的最大值,例如,如果short表示的范围为-32768到+32767,则无符号版本的表示范围为0—65535。当然,当且仅当数值不为负数是才会使用无符号类型,如人口,粒数。

14.如果知道变量可能表示的整数值大于16位整数的最大可能值,则使用long,即使系统上int为32位,也应该这样做。这样,将程序移植到16位系统时,就不会突然无法正常工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值