C++ Prime Plus学习笔记:第五章 循环和关系表达式

第五章 循环和关系表达式

5.1. for循环

for(initialization; test-expression; updata-expression){
    body
}
  1. 设置初始值
  2. 执行测试
  3. 执行循环
  4. 更新用于测试的值

continue 跳过本次循环

break 结束所有循环

5.1.5. ++ –

前缀和后缀的效果是一样的,但是作用时间不同

int a = 20;
int b = 20;
cout << "a = " << a << " b = " << b << endl;
cout << "a++ = " << a ++ << " ++b = " << ++b << endl;
cout << "a = " << a << " b = " << b << endl;

/*
a = 20 b = 20
a++ = 20 ++b = 21
a = 21 b = 21
*/

a++表示使用a的当前值来计算表达式,计算完后将a的值加1

++b表示先将b的值加1,然后用新的b来计算表达式

int x = 5;
int y = ++x;
// y is 6 and x is 6

int z = 5;
int y = z++;
// y is 5 and z is 6

5.1.6. 副作用和顺序点

副作用:side effect。在计算表达式时对某些东西(如存储在变量当中的值)进行了修改

顺序点:sequence point。程序执行过程中的一个点。在这里,进入下一步之前将确保对所有的副作用进行了评估。

C++中,一个分号就是一个顺序点。

5.1.14 C风格字符串的比较

如要想要知道字符数组中的字符串是不是mate。word是数组名。

word == “mate”

这个语句是错误的,因为word这个数组名指向的是地址。

可以用strcmp()函数来比较。这个函数接受两个字符串地址作为参数。可以使指针、字符串常量或者字符数组名。

如果字符串相同,返回0。

如果第一个字符串按字母顺序排在第二个字符串之前,返回一个负数。

否则返回一个正数。

注意,这个判断的长度是通过结尾的空字符来确定的。

5.1.15. 比较string类字符串

可以将关系运算符用于string对象。

也就是说,可以使用==、!=

因为string类重载了运算符!=

5.2. while循环

5.2.2. 等待一段时间:编写延时循环

clock()函数返回程序开始执行后所用的系统时间。但是它返回的不一定是秒,某些系统上可能是long或者unsigned long或者其他类型。

ctime头文件中定义了一个符号常量CLOCKS_PER_SEC,该常量等于每秒钟包含的系统时间单位数。所以可以将系统时间除以这个值,就能得到秒数。或者将秒数乘以这个常量,就可以得到以系统时间单位为单位的时间。

其次,ctime将clock_t作用clock()返回类型的别名,这意味着可以将变量生命为clock_t类型。编译器会把它转换为long、unsigned int或者其他类型。

    cout << "enter the delay time, in seconds: ";
    float sec;
    cin >> sec;
    clock_t delay = sec * CLOCKS_PER_SEC;
    cout << "starting\a\n";
    clock_t start = clock();
    while (clock() - start < delay);
    cout << "done \a\n";

类型别名:C++为类型建立别名的方式有两种

第一种就是用预处理器#define

第二种是使用typedef来创建

typedef typeName aliasName;

typedef char * byte_pointer;

5.3. do while

先执行一次do

然后再进行while的判断

5.4. 基于范围的for循环(C++11)

double prices[5] = {4.99, 10.99, 6.87, 7.99, 8.49};
for(double x : prices)
    cout << x << endl;

其实就是迭代。。

如果想要通过迭代来修改数组的元素,就用下面的语法

for(double &x : prices)
    x *= 0.8;
for(int x : {3, 5, 2, 8, 6})
    cout << x << " " << endl;

5.5. 循环和文本输入

5.5.4. 文件尾条件

检测到EOF后,cin将eofbit和failbit都设置为1

可以通过eof()来查看eofbit是否被设置

如果eofbit或failbit被设置为1,则fail()返回true

同时,他们是读取后才报告的,而不是预先报告。

while(cin.fail() == false){

}

5.5.5. 另一个cin.get()版本

getchar()和putchar()

cin.get()接收下一个字符,返回一个对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值