-
for循环的组成部分
a. 设置初始值
b. 执行测试,判断循环是否应当继续进行;(可以使用任意表达式,c++将把结果强制转换为bool类型,0为false,非0为true)
c. 执行循环操作
d. 更新用于测试的值 -
C++的常用方式是,在for和括号之间加上一个空格,但函数名和括号之间的空格会被省略
-
通常情况下cout显示bool值之前将他们转换为int(0,1),使用
cout.setf(ios_base::boolalpha)
函数会调用设置一个标记,该标记命令cout显示true和false,而不是1和0 -
使用for循环实现阶乘
# include <iostream> const int ArSize = 16; int main() { long long factorials[ArSize]; factorials[1] = factorials[0] = 1; for(int i = 2; i < ArSize; i++) factorials[i] = i * factorials[i-1]; return 0; }
-
递增运算符(++)和递减运算符(–)
a. 前缀版本(++x):将x的值加1,然后使用新的值计算表达式
b. 后缀版本(x++):使用x的当前值计算表达式,然后将x的值加1
c. 不要在同一条语句对同一个值递增或递减多次
d. 对于用户定义的类型,前缀类型和后缀类型的执行速度有细微的差别(内置类型不会有差别):
i. 前缀:将值加1,然后返回结果
ii. 后缀:首先复制一个副本,将其加1,然后将复制的版本返回 -
递增/递减运算符和指针
a. 前缀递增、前缀递减和解除引用运算符的优先级相同,以从右到左的方式进行结合
b. 后缀递增、后缀递减的优先级相同,但比前缀运算符的优先级更高,以从左到右的方式进行结合double arr[5] = {21.1; 32.8, 23.4, 45.2, 37.4}; double *pt = arr; ++ pt; //pt指向arr[1] double x = *++pt; //x=23.4; ++*pt; //先取pt指向的值,然后将这个值加1,24.4 (*pt)++; // pt指向arr[2],值为24.4,然后运算符++将这个值递增到25.4 x = *pt++; //x=25.4,但执行完该语句后,pt将指向arr[3]
-
组合运算符:组合了加法等和赋值运算符,实现加两个数相加并赋值给左面的操作数
-
for循环,如果将循环体缩进,但省略花括号,则只有第一条语句位于循环中
-
如果在一个语句块中声明一个变量,而外部语句块也有一个同名变量,在声明位置到内部语句块结束的范围之内,新变量将隐藏旧变量;
-
字符串反转
#include <iostream> #include <string> int main() { using namespace std; cout << "enter a word: " string word; cin >> word; char temp; int i,j; for(j=0, i = word.size() - 1; j < i; --i, ++j) { temp = word[i]; word[i] = word[j]; word[j] = temp; } cout << word << endl; } //temp如果在循环体内部被声明,那每轮循环都要被分配和释放,速度会略慢
-
c++规定,逗号表达式的值是第二部分的值
-
关系运算符(优先级比算术运算符低)
-
字符串数组word
word==“mate”
不成立数组名是数组的地址,同样括号扩起的字符串常量也是其地址,上面的表达式不是判断两个字符串是否相同,而是查看他们是否存储在相同的地址上;不能用关系运算符比较字符串,但可以比较字符
-
如果要比较两个字符串应使用C风格字符串库中的strcmp()函数来比较,若两个字符串相同,函数返回零;如果第一个字符串按字母顺序排在第二个字符串之前则函数返回负值,若第一个字符串按字母顺序排在第二个字符串之后则函数返回一个正数值
-
string类字符串,因类函数重载了关系运算符,所以可以使用==,!=等运算符
5.1 for循环
于 2022-07-03 22:19:26 首次发布