C++ Primer Plus笔记: 2023.07.05

1.在C++中,每个表达式都有值。例如下面的表达式:

x = 20 ;

C++将赋值表达式的值定义为左侧成员的值,因此这个表达式的值为20。
由于赋值表达式有值,因此可以编写下面的语句:

maids = (cooks = 4) + 3 ;

表达式cooks = 4的值为4,因此maids的值为7。
允许上述语句存在的原则也允许编写如下的语句:

x = y = z = 0

下面的程序可以说明这一点:

#include 
using namespace std ;

int main()
{
	int x ;
	
	cout << "The expression x = 100 has the value " ;
	cout << (x = 100) << endl ; 
	cout << "Now x = " << x << endl ;
	cout << "The expression x < 3 has the value " ;
	cout << (x < 3) << endl ;
	cout << "The expression x > 3 has the value " ;
	cout << (x > 3) << endl ;
	cout.setf(ios_base::boolalpha) ;
	cout << "The expression x < 3 has the value " ;
	cout << (x < 3) << endl ;
	cout << "The expression x > 3 has the value " ;
        cout << (x > 3) << endl ;

	return 0 ;
}

运行结果:

The expression x = 100 has the value 100
Now x = 100
The expression x < 3 has the value 0
The expression x > 3 has the value 1
The expression x < 3 has the value false
The expression x > 3 has the value true

2.下面的函数调用:

cout.setf(ios_base::boolalpha) ;

设置了一个标记,该标记命令cout显示true和false, 而不是0和1

3.类似于下面这样的表达式不要写了吧:

x = 2 * x++ * (3 - ++x) ;

或者:

y = (4 + x++) + (6 + x++) ;

4.如果在语句块中定义一个新的变量,则仅当程序执行该语句块中的语句时,该变量才存在,执行完该语句块后,变量将被释放。
代码:

#include 
using namespace std ;

int main()
{
	int x = 20;
	{
		int y = 100 ;
 		cout << x << endl ;
 		cout << y << endl ;
 	}
	cout << x << endl ;
 	cout << y << endl ;
 	return 0 ;
}

编译结果:

testblock.cpp: In function ‘int main()’:
testblock.cpp:13:17: error: ‘y’ was not declared in this scope
   13 |         cout << y << endl ;
      |                 ^

5.如果在一个语句块中声明一个变量,而外部语句块中也有一个这种名称的变量,情况如何?在声明位置到内部语句块结束的范围内,新变量将隐藏就变量,然后旧变量再次可见:

#include 

int main()
{
	using std::cout ;
	using std::endl ;
	int x = 20 ;
	{
		cout << "x = " << x << endl ;
		int x = 100 ;
		cout << "x = " << x << endl ;
	}
	cout << "x = " << x << endl ;
	return 0 ;
}

运行结果:

x = 20
x = 100
x = 20

6.C++规定,逗号表达式的值是第二部分的值,在所有运算符中,逗号运算符的优先级是最低的
例如:

#include 
using namespace std ;

int main()
{
	int cata;

	cata = 17,240 ;
	cout << "cata = " << cata << endl ;
	
	(cata = 17), 240 ;
	cout << "cata = " << cata << endl ;

	cata = (17, 240) ;
	cout << "cata = " << cata << endl ;

	return 0 ;
}

运行结果:

cata = 17
cata = 17
cata = 240

7.类似这样的for循环也是可以的:

cout << "x = " ;
for (cin >> x; x == 0; cin >> x)
		cout << "x = " ;

运行结果:

x = 0
x = 0
x = 0
x = 0
x = 0
x = 0
x = 0
x = 0
x = 9

x = 9之后就从for循环中退了出来

8.strcmp函数接受两个字符串地址作为参数,这意味着参数可以是指针、字符串长量或字符数组名。如果两个字符串相同,函数将返回0; 如果第一个字符串按字母顺序排在第二个字符串之前,则strcmp( )将返回一个负数值,如果第一个字符串按字母顺序排在第二个字符串之后,则strcmp函数将返回一个正数值。

9.类型别名:
C++为类型建立别名的方法有两种,一种是使用预处理器:

#define BYTE char

第二种是使用C++和C的关键字typedef来创建别名,通用格式:

typedef typeName aliasName ;

在声明一系列变量的时候,typedef比define更好用

你可能感兴趣的:(C++,Primer,Plus,c++)