C++ Primer Plus 学习笔记 第五章 01 for循环递增运算符和递减运算符 复合语句,逗号运算符 C风格字符串比较、string类字符串比较

    xiaoxiao2021-03-25  129

    C++ Primer Plus 学习笔记 第五章 01   for循环    递增运算符和递减运算符 复合语句,逗号运算符 C风格字符串比较、string类字符串比较 声明:本文整理自《C++ Primer Plus 》 /*求前16个阶乘*/ #include<iostream> const int ArSize = 16; int main() {     using namespace std;     long long factorials[ArSize];     factorials[0]=factorials[1]=1LL;     for(int i=2;i<ArSize;i++)     {         factorials[i]=factorials[i-1]*i;     }     for(int i=0;i<ArSize;i++)     {         cout<<i<<"!="<<factorials[i]<<endl;     } } 一、for循环 1.基本知识     for (j=0,i=word.size()-1;j<i;--i,++j)     {         cout<<i<<" "<<j<<endl;         temp=word[i];         word[i]=word[j];         word[j]=temp;     } 1.设置初始值 j=0,i=word.size()-1; 初始化只执行一次。 2.进行测试,看是否进行循环 j<i; 3.执行循环 执行大括号里的内容 4.更新用于测试的值。 --i,++j;然后再进行2。 cout在显示bool值之前将它们转换为int,但cout.setf (ios::boolalpha) 函数调用了一个标记,该标记命令cout显示true和false。 可以在for循环中声明变量,当程序离开循环后,变量消失。 2.递增运算符和递减运算符 a++ 使用a的当前值计算表达式,然后将a的值加1, ++b 先把b加1,然后使用新的值来计算表达式。 副作用:计算表达式时对某些东西(如存储在变量中的值)进行了修改; 顺序点:程序执行过程中的一个点。在这里,进入下一步之前将确保对所有的副作用都进行了评估。 分号就是一个顺序点,在处理下一条语句之前,赋值运算符、递增运算符和递减运算符的修改都必须完成 。 int guess = 8; while (guess++ < 10)//和10比较后+1,是一个完整的测试条件,确保副作用(将guess加1在cout之前完成)     cout << guess << endl;//guess = 9; 前缀格式和后缀格式 for (i=1; i>0; i--) 和  for (i=1; i>0; --i)  i--和--i的副作用将在程序进入下一步之前完成,前缀格式和后缀格式的最终效果相同。但后缀版本要复制一个副本,将其加1,然后将复制的副本返回。前缀版本的效率较高。 递增递减运算符合指针 前缀递增、前缀递减和解除引用运算符(*)的优先级相同,以从右到左的方式进行结合。 pt指向arr[2] *++pt 先把pt加1,然后将*应用于被递增后的pt 等价于 *(pt+1),pt指向arr[3] ++*pt 等价于++(*pt),pt指向arr[2] x = *pt++;等价于*(pt+1),pt指向arr[3] 后缀递增和后缀递减的优先级相同,比前缀运算符的优先级高。以从左到右的方式进行结合。 3.复合语句,逗号运算符 如果一个语句块中声明一个变量,而外部语句块中也有一个这种名称的变量,在声明位置到内部语句块结束的范围之内,新变量将隐藏旧变量;然后旧变量再次可见。 逗号运算符 :允许将两个表达式放到C++句法只允许放一个表达式的地方。     for (j=0,i=word.size()-1;j<i;--i,++j)     {         cout<<i<<" "<<j<<endl;         temp=word[i];         word[i]=word[j];         word[j]=temp;     } == 等于运算符 = 赋值运算符 4. C风格字符串比较、string类字符串比较 #include <cstring>提供了strcmp()函数原型,接收两个字符串地址作为参数,参数可以是指针、字符串常量或字符串数组名。如果字符串相同,返回0。 string word = "?mate"; for (char ch = 'a'; word != "mate"; ch++) {     cout << word <<endl;     word[0] = ch; } 使用string类重载运算符!=的条件:至少有一个操作数为string对象,另一个操作数可以是string对象,或是c-风格字符串。
    转载请注明原文地址: https://ju.6miu.com/read-8947.html

    最新回复(0)