《C++primer Plus6》第五章学习笔记(一)

第五章  循环和关系表达式

计算机除存储数据外,还可以对数据进行分析、合并、充足、抽取、修改、推断、合成以及其他操作



5.1 for循环

1)for循环的组成

//forloop.cpp -- introducing the for loop
#include <iostream>

int main()
{
using namespace std;
int i; //create a counter
//  initialize; test ; update
for (i = 0; i < 5; i++)
cout<<"C++ knows loops.\n";
cout<<"C++ knows when to stop.\n";
return 0;
}

其中,for语句中含四个部分:

          初始化(loop initialization): i = 0

          循环测试(loop test): i < 5 (检查 i 是否小于5,是则执行接下来的语句——循环体)

          循环更新(loop update):i++(++是递增运算符(increment operator),i++ 等同于 i = i + 1)

          循环体(loop body):cout<<"C++ knows loops.\n";

    直到测试失败(i = 5)时,执行循环后面的语句(cout<<"C++ knows when to stop.\n";


    实际操作步骤为:

           1、设置初始值(初始化)

            2、执行测试,看看循环是否一定继续进行(循环测试)

            3、执行循环操作(循环体)

            4、更新用于测试的值(循环更新)

        1、2、3构成了控制部分,由括号括起,每部分都是一个表达式,彼此有分号隔开

        4的控制语句叫做循环体,只要测试表达式为ture,它便被执行

     格式:  for  (initialization;  test-expression;  update-expression)

                   body

//num_test.cpp -- use numeric test in for loop
#include<iostream>
int main()
{
using namespace std;
cout<<"Enter the starting countdown value: ";
int limit;
cin>>limit;
int i;
for (i = limit; i; i--)  //quits when i is 0
cout<<"i = "<<i<<"\n";
cout<<"Done now that i = "<<i<<"\n";
return 0;
}

      这里练习了i-- ,递减运算符


bool类型被引入前,若关系表达式为true,则判为1,如果为false,判为0,引入后就直接判为true和false,这样不会导致不兼容问题

for是入口条件(entry-condition)循环,每轮循环前,都将计算测试表达式的值

更新表达式(update-expression)在每轮循环结束时执行,此时循环体一执行完毕


2)表达式和语句

表达式:任何值或任何有效的值和运算符的组合都是表达式,每个C++表达式都有值

e.g  cooks=4 的值为4,

C++允许这样的语句:x=y=z=0;  这种方法可以快速地将若干变量设置为相同的值

        赋值运算符是从右到左结合的,即0先赋给z,然后在将z=0赋给y……


//express.cpp -- values of expressions
#include<iostream>
int main()
{
using namespace std;
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;
}


通常cout在显示bool值前将它们转换为int, 但cout.setf(ios_base::boolalpha)函数调用设置了一个标记,该标记命令cout显示true和false,而不是1和0

判定表达式会有副作用:修改被赋值者的值

     e.g x=100;

        x 的值被修改了 

            x+15

       这里没有副作用,x的值没有被修改

           ++x+15

       有副作用,它将x加1


表达式转变成语句只需要加分号(;)即可

     e.g   age=100 ——表达式

              age=100;——语句

        任何表达式加分号都是有效的语句

        有效的表达式不代表有意义

              e.g  rodents + 6; ——有效,仅仅是计算和,而没有使用结果

【从语句中删除分号不代表一定能转换为表达式】

             e.g int load不是表达式,因为它没有值

【不能把for循环赋给变量,for循环不是表达式,因此没有值,也不能给它赋值】


3)修改规则

           for(for-iinit-statement condition; expression;)

           statement

                  e.g  for (int i = 0; i < 5; i++)

                                cout<<"C++ knows loops.\n";

                         cout<<i <<endl;

【在for-init-statement中声明的变量,在程序离开循环后,将消失】

          

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值