美文网首页
第五章 循环和关系表达式

第五章 循环和关系表达式

作者: 鬼枭嗜 | 来源:发表于2019-02-01 15:12 被阅读0次

    加快进度:(                         

    for循环

    for循环是入口条件循环,在判断条件时会强制转换成bool类型。

    C++将赋值表达式的值定义为左侧成员的值 因此 x=20;的值为20。

    cout<<(x>3)<<endl 输出的是1

    cout.setf(ios::boolalpha)函数调用设置一个标记 该标记命令cout显示true和false 而不是

    C++表达式是值活值与运算符的组合,每个C++表达式都有值。

    i=1; //i++的值还是1但是i=2 而++i的值为2且i=2.

    p为指针 *++p等于*(++p)++*p则先取值后加一。

    ++优先级比*高

    组合赋值运算符......

    逗号确保先计算第一个表达式,然后计算第二个表达式,C++规定,逗号表达式的值是第二部分的值。

    关系运算符可以用于string类对象。string对象不使用空字符来标记字符串末尾

    c中判断字符串是否相等strcmp

    while循环

    先判断后执行 可以和for循环相互转化。

    延时循环 clock()和头文件ctime

    do while循环 出口循环

    基于范围的for循环

    例如

    double price[5]={4.9,4.6,0,0,0};

    for(double x:price)

    cout<<x<<std::endl;

    这样可以输出price所有的值会全部取一次 如果要更改x的数值则需要用&x代替x(条件位置的x)。

    还可以结合使用基于范围的for循环和初始化列表:

    for(int x:{3,5,2,8,6})

    cout<<x<<" ";

    cout<<"\n";

    循环和文本输入

    读取char值时,与读取其他基本类型一样,cin将忽略空格和换行符。发送给cin的输入将被缓冲 按下回车后,整个字符序列才会被发送给程序。

    在第四章我们知道面向行输入有getline和get两类 

    而cin.get()可以用于读取一个字符 那么cin.get(ch)同样就可以读取一个字符 从而更改掉上文cin的缺点。

    c++支持被称为函数重载的oop特性。函数重载允许创建多个同名函数,条件是他们的参数列表不同。所以面向行读取使用cin.get(ch,20)和cin.get(ch)(第一个ch是char类型数组第二个为char)为两个不同的函数。

    在了解上文之后 对于循环输入输出是否可以选择一个恰当的标识符呢?

    文件尾条件

    很多pc编程环境都将ctrl+z视为模拟的EOF。

    检测到eof时cin将eofbit和failbit都设为1。可以通过成员函数eof()来查看eofbit是否被设置 检测到EOFcin.eof()返回bool值true否者返回false。同样如果eofbit和failbit被设置为1,啧fail()成员函数返回true否则返回false。注意eof()和fail()报告最近读取的结果 二者为事后报告 所以应该放在不读取之后 通常使用fail()因为他可用于更多的实现中。

    常见的字符输入做法

    cin.get(ch);

    while(cin.fail()==false) // 条件可换为!cin.fail() 

    {

        ...

        cin.get(ch)

    }

    然而有一种更好的方法当cin出现在需要bool值得地方时,转换函数将会被调用读取成功为true否则为false

    所以条件可改为cin.get(ch) 去除循环内和循环前的读取。

    cout.put(ch)用来显示字符。

    同样的在读取判断EOF过程中可使用ch=cin.get();只需要条件判断ch!=-1即可。当然也可以将二者整合为一个式子放在条件处。

    嵌套循环和二维数组

    略。

    (完)

    相关文章

      网友评论

          本文标题:第五章 循环和关系表达式

          本文链接:https://www.haomeiwen.com/subject/cwoqsqtx.html