C++ Primer Plus 学习笔记 第五章 01 for循环 递增运算符和递减运算符 复合语句,逗号运算符 C风格字符串比较、string类字符串比较
2017-03-09 09:17
633 查看
C++ Primer Plus 学习笔记 第五章 01 for循环 递增运算符和递减运算符 [b]复合语句,逗号运算符 [b]C风格字符串比较、string类字符串比较
声明:本文整理自《[b]C++ Primer Plus 》
[/b][/b][/b]
/*求前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.基本知识
<
4000
div style="background-color:inherit;"> 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-风格字符串。
声明:本文整理自《[b]C++ Primer Plus 》
[/b][/b][/b]
/*求前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.基本知识
<
4000
div style="background-color:inherit;"> 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-风格字符串。
相关文章推荐
- 2012/1/13 《C++ Primer Plus》第五章:循环和表达式 学习笔记
- [学习笔记][C++Primer Plus]使用cout格式化输出字符串,3q xuzhong
- 《C++ Primer Plus》第16章 string类和标准模板库 学习笔记
- 2012/1/11 《C++ Primer Plus》第四章:复合类型 学习笔记
- 2012/2/7 《C++ Primer Plus》第十六章:string类和标准模板库 学习笔记
- C++Primer第五版【学习笔记】——第五章 语句
- 《C++ Primer Plus》16.1 string类 学习笔记
- [C++ Primer Plus]学习笔记--每次读取一行字符串输入
- C++ Primer Plus 学习笔记 第四章 01
- 2012/2/7 《C++ Primer Plus》第十六章:string类和标准模板库 学习笔记
- 2012/1/11 《C++ Primer Plus》第四章:复合类型 学习笔记
- C++ Primer Plus 学习笔记 第五章 编程练习
- [学习笔记][C++Primer Plus]String类的使用
- [学习笔记][C++Primer Plus]使用cout格式化输出字符串
- 2012/1/14 《C++ Primer Plus》第六章:分支语句和逻辑操作符 学习笔记
- C++ Primer Plus学习笔记之String类
- c++学习笔记之复合类型(c++ primer plus)
- 2012/1/13 《C++ Primer Plus》第五章:循环和表达式 学习笔记
- 2012/1/14 《C++ Primer Plus》第六章:分支语句和逻辑操作符 学习笔记
- C++ Primer Plus学习:第六章 分支语句和逻辑操作符(1)