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更好用