百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

C++ Primer Plus学习笔记之分支语句和逻辑运算符

toyiye 2024-06-21 12:38 8 浏览 0 评论

前言

个人觉得学习编程最有效的方法是阅读专业的书籍,通过阅读专业书籍可以构建更加系统化的知识体系。 一直以来都很想深入学习一下C++,将其作为自己的主力开发语言。现在为了完成自己这一直以来的心愿,准备认真学习《C++ Primer Plus》。 为了提高学习效率,在学习的过程中将通过发布学习笔记的方式,持续记录自己学习C++的过程。

一、if语句

当C++程序必须决定是否执行某个操作时通常使用if语句来实现选择。if有两种格式:ifif else

if语句的语法与while相似:

if(test-condition)
    statement

如果test-condition(测试条件)为true,则程序将执行statement(语句),后者既可以是一条语句,也可以是语句块。

if测试条件也将被强制转换为bool值,因此0将被转换为false,非零为true

if语句让程序决定是否执行特定的语句或语句块,而if else语句则让程序决定执行两条语句或语句块中的哪一条,这种语句对于选择其中一种操作很有用。

if else语句的通用格式如下:

if(test-condition)
    statement1
else
    statement2

C++对if else进行扩展提供了两个以上选择的功能:

if(test-condition1)
    statement1
else if(test-condition2)
    statement2
else
    statement3

二、逻辑表达式

C++据供了3种逻辑运算符,来组合或修改已有的表达式。这些运算符分别是逻辑OR(||)、逻辑AND(&&)和逻辑NOT(!)。

1、逻辑OR(||)

当两个条件中有一个或全部满是禁个要求时、可以用单词or来指明这种情况。

C++可以采用逻辑OR运算符(||),将两个表达式组合在一起。如果原来表达式中的任何一个或全部都为true(或非零),则得到的表达式的值为true;否则,表达式的值为false

C++规定,运算符是个顺序点(sequence point)。也是说,先修改左侧的值,再对右侧的值进行判定(C++11的说法是,运算符左边的子表达式先于右边的子表达式)。另外,如果左侧的表达式为true,C++将不会去判定右侧的表达式,因为只要一个表达式为true,则整个逻辑表达式为true

2、逻辑AND(&&)

逻辑AND运算符(&&),也是将两个表达式组合成一个表达式。仅当原来的两个表达式都为true时得到的表达式的值才为true

||运算符一样,&&运算符也是顺序点,因此将首先判定左侧,并且在右侧判定之前产生所有的副作用。如果左侧为false,则整个逻辑表达式必定为false,在这种情况下,C++将不会再对右侧进行判定。

逻辑AND运算符的优先级高于逻辑OR运算符。

3、逻辑NOT(!)

!运算符将它后面的表达式的真值取反。

!运算符的优先级高于所有的关系运算符和算术运算符。

逻辑运算符的另一个种表示方式:

运算符

另一种表示方式

&&

and

||

or

not

三、字符函数库cctype

C++从C语言继承了一个与字符相关的、非常方便的函数软件包,它可以简化诸如确定字符是否为大写字母、数字、标点符号等工作,这些函数的原型是在头文件cctype(老式的凤格中为ctype.h)中定义的。

cctype中的字符函数:

函数名称

返回值

isalnum()

如果参数是字母数字,即字母或数字,该函数返回true

isalpha()

如果参数是字母,该函数返回true

iscntrl()

如果参数是控制字符,该函数返回true

isdigit()

如果参数是数字(0~9),该函数返回true

isgraph()

如果参数是除空格之外的打印字符,该函数返回true

islower()

如果参数是小写字母,该函数返回true

isprint()

如果参数是打印字符(包括空格),该函数返回true

ispunct()

如果参数是标点符号,该函数返回true

isspace()

如果参数是标准空白字符,如空格、进纸、换行符、回车、水平制表符或垂直制表符,该函数返回true

isupper()

如果参数是大写字母,该函数返回true

isxdigit()

如果参数是十六进制数字,即09、af或A~F,该函数返回true

tolower()

如果参数是大写字符,则返回其小写,否则返回该参数

toupper()

如果参数是小写字符,则返回其大写,否则返回该参数

四、?:运算符

C++有一个常被用来代替if else语句的运算符,这个运算符被称为条件运算符(?:),它是C++中唯一一个需要3个操作数的运算符。该运算符的通用格式如下:

expression1 ? expression2 :expression 3

如果expression1true,则整个条件表达式的值为expression2的值;否则,整个表达式的值为expression3的值。

五、switch语句

假设用户需要从多个选项中选择一个,虽然可以通过扩展if else序列来处理这种情况,但C++的switch语句能够更容易地从大型列表中进行选择。下面是switch语句的通用格式:

switch (integer-expression)
{
    case label1 : statement(s)
    case label1 : statement(s)
    ...
    default : statement(s)
}

C++的switch语句就像指路牌,告诉计算机接下来应执行哪行代码。执行到switch语句时,程序将跳到使用integer-expression的值标记的那一行。

integer-expression必须是一个结果为整数值的表达式。另外,每个标签都必须是整数常量表达式。最常见的标签是intchar常量,也可以是枚举量。如果integer-expression不与任何标签匹配,则程序将跳到标签为default的那一行。Deault标签是可选的,如果被省略,而又没有匹配的标签,则程序将跳到switch后面的语句处执行。

C++中的case标签只是行标签,而不是选项之间的界线。也是说,程序跳到switch中特定代码行后,将依次执行之后的所有语句,除非有明确的其他指示,程序不会在执行到下一个case处自动停止,要让程序执行完一组特定语句后停止,必须使用break语句。这将导致程序跳到switch后面的语句处执行。

六、break和continue语句

breakcontinue语句都使程序能够跳过部分代码。可以在switch语句或任何循环中使用break语句使程序跳到switch或循环后面的语句处执行。continue语句用于循环中,让程序跳过循环体中余下的代码,并开始新一轮循环。

八、简单文件输入/输出

文本I/O的概念:使用cin进行输入时,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码。不管目标数据类型是什么,输入一开始都是字符数据——文本数据。然后,cin对象负责将文本转换为其他类型。为说明这是如何完成的,来看一些处理同一个输入行的代码。

本文讨论的文件I/O相当于控制台I/O,因此仅适用于文本文件。

// outfile.cpp -- writing to a file
#include <iostream>
#include <fstream> // for file I/O
int main()
{
    using namespace std;
    char automobile[50];
    int year;
    double a_price;
    double d_price;
    ofstream outFile; // create object for output
    outFile.open("e:\\1.txt"); // associate with a file
    cout << "Enter the make and model of automobile: ";
    cin.getline(automobile, 50);
    cout << "Enter the model year: ";
    cin >> year;
    cout << "Enter the original asking price: ";
    cin >> a_price;
    d_price = 0.913 * a_price;
// display information on screen with cout
    cout << fixed;//按浮点型进行输出。
    cout.precision(2);//控制浮点精度为2,即保留小数点位数
    cout.setf(ios_base::showpoint);//使用默认的浮点格式时,上述语句还将导致末尾的0被显示出来。
    cout << "Make and model: " << automobile << endl;
    cout << "Year: " << year << endl;
    cout << "Was asking #34; << a_price << endl;
    cout << "Now asking #34; << d_price << endl;
// now do exact same things using outFile instead of cout
    outFile << fixed;
    outFile.precision(2);
    outFile.setf(ios_base::showpoint);
    outFile << "Make and model: " << automobile << endl;
    outFile << "Year: " << year << endl;
    outFile << "Was asking #34; << a_price << endl;
    outFile << "Now asking #34; << d_price << endl;
    outFile.close(); // done with file
    // cin.get();
    // cin.get();
    return 0;
}

读取文件使用ifstream

// sumafile.cpp -- functions with an array argument
#include <iostream>
#include <fstream> // file I/O support
#include <cstdlib> // support for exit()
const int SIZE = 60;
int main()
{
    using namespace std;
    char filename[SIZE];
    ifstream inFile; // object for handling file input
    cout << "Enter name of data file: ";
    cin.getline(filename, SIZE);
    inFile.open(filename); // associate inFile with a file
    if (!inFile.is_open()) // failed to open file
    {
        cout << "Could not open the file " << filename << endl;
        cout << "Program terminating.\n";
        // cin.get(); // keep window open
        exit(EXIT_FAILURE);
    }
    double value;
    double sum = 0.0;
    int count = 0; // number of items read
    inFile >> value; // get first value
    while (inFile.good()) // while input good and not at EOF
    {
        ++count; // one more item read
        sum += value; // calculate running total
        inFile >> value; // get next value
    }
    if (inFile.eof())
        cout << "End of file reached.\n";
    else if (inFile.fail())
        cout << "Input terminated by data mismatch.\n";
    else
        cout << "Input terminated for unknown reason.\n";
    if (count == 0)
        cout << "No data processed.\n";
    else
    {
        cout << "Items read: " << count << endl;
        cout << "Sum: " << sum << endl;
        cout << "Average: " << sum / count << endl;
    }
    inFile.close(); // finished with the file
    // cin.get();
    return 0;
}

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码