c++ primer plus学习笔记(3)——结构语句、简单输入输出

本文介绍了C++中的条件语句,特别是效率原则的应用,以及if...else结构的就近匹配规则。同时,详细讲解了如何使用cin进行简单输入,包括抽取运算符和getline的区别,帮助理解基本输入处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 条件语句

1.1 条件表达式

1.1.1 效率原则

若表达式的一部分已经能确定真值,则后续部分不再执行。如:

//for example
int main()
{
    int a = 10, b = 0;
    if (a >= 10 || b++ == 0)    //(1)
        ……;
    if (a > 10 || b++ == 0)    //(2)
        ……;
    
}

(1)中b++不执行,因为a>=10已经使表达式为真。而(2)中b++执行。

1.2 if…else…

1.2.2 else的就近匹配原则

若不显示指明块,else能与多个if匹配,则匹配最近的if。如:

//for example
#include <iostream>
using namespace std;
int main()
{
    int a = 10, b = 0;
    if (a > 5)
    if (a > 10)
        cout << "if-if";
    else
        cout << "else";
}

其等效于:

//for example
#include <iostream>
using namespace std;
int main()
{
    int a = 10, b = 0;
    if (a > 5)
        if (a > 10)
            cout << "if-if";
        else
            cout << "else";
    if (a > 5)    //or
    {
        if (a > 10)
            cout << "if-if";
        else
            cout << "else";
    }

}

2 循环语句

3 简单输入

cin类连接标准输入流(默认键盘),一般地,我们使用以下几种语句

3.1 抽取运算符 >>

使用cin需要包含<iostream>头文件,并使用using语句,具体见例。

>>能适应各种基本数据类型,从缓冲区读取输入,格式化后赋值到相应的变量。如:

//for example
#include <iostream>
using namespace std;
int main()
{
    char a;
    int b;
    double c;
    string d;
    cin >> a;
    cin >> b;
    cin >> c;
    cin >> d;
}

或者可以连续使用:

//for example
#include <iostream>
using namespace std;
int main()
{
    char a;
    int b;
    double c;
    string d;
    cin >> a >> b >> c >> d;
}

3.1.1 抽取运算符的工作细节

对于char类型的变量,假设如下代码:

char ch;
cin >> ch;

cin将缓冲区的第一个字符赋值给变量ch

对于int或double:

int x;
cin >> x;
//or
double y; 
cin >> y;

cin将不断读取缓冲区,直至遇到第一个不属于int/double的字符。然后将之前读取的数字字符格式化为数字,赋值给变量x/y。其中,

属于int的字符包括:'+'、'-'、数字字符;

属于double的字符包括:'.'、int的字符;

对于char[]和string:

char cstr[10];
cin >> cstr;
//or
string str;
cin >> str;

cin将不断跳过,从第一个非空白开始不断读取,直至下一个空白。将读取的字符串赋值给str/cstr。

空白字符:' '、'\n'、'\t'等不显示的字符

3.1.2 getline

使用抽取运算符不能保证char数组有足够的空间来存储读取的字符,而使用geiline可以解决这个问题。

getline将不断读取字符,直至读取了n-1个字符,或下一个字符为指定字符(默认为'\n'),并抛弃下一个'\n'之前的所有字符。在字符串末尾添加'\0',并赋值给char数组。如:

char x[10];
cin.getline(x, 5);
cout << x;

输入:abcdabcd,

输出:abcd,

输入:a b c d a b c d,

输出:a b ,

若:

char x[10];
cin.getline(x, 5, 'c');
cout << x;

输入:abcdabcd,

输出:ab,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岚花落_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值