当前位置: 首页 > news >正文

C++ Primer笔记001:标准输入输出/基本数据/流程控制语句

文章目录

  • 1.标准输入cin:
  • 2.标准输入cout:
  • 3.endl:
  • 4.命名空间(namespace):
  • 5.有符号类型和无符号类型
  • 6.字面值常量
  • 7.变量的初始化和赋值
  • 8.变量的作用域
  • 9 求余运算符的符号
  • 10.关于sizeof
  • 11.switch case语句漏写break

1.标准输入cin:

cin对象是标准输入流,对象类型是istream,与输入运算符(>>)一起使用,>>左边是一个istream对象,右侧是写入对象。

>>从给定的istream中读取输入,并存入输入写入对象中。

2.标准输入cout:

cout是标准输出流,对象类型是ostream,与输出运算符(<<)一起使用,<<左边是一个ostream对象,右侧是输入对象。

<<从将输入对象写入到给定的ostream对象中。

3.endl:

endl的效果是将缓冲区的数据写入到文件或者设备中并换行,endl的效果等价于'\n' + std::flush

4.命名空间(namespace):

命名空间的作用是避免名字冲突,使用命名空间中的对象是,要加作用域运算符::,或者直接加using namespace 命名空间的名字

示例程序:

void iotest()
{int a,b;std::cin >> a >> b;//从cin中读取数据,写入到变量a,b中,使用cin要加命名空间和作用域运算符std::cout << a <<std::endl<< b<<'\n' << std::flush;//将a,b中的数据依次写入到标准输入中return 0;
}

运行结果:

前两个数字1和4是从键盘输入的数字,后两个数字是把a b的值写入到标准输入流中,然后显示出来

不加命名空间和作用域运算符的写法

using namespace std;
void iotest()
{int a,b;cin >> a >> b;cout << a <<endl<< b<<'\n' << flush;
}

效果同上

一般实际写代码的时候,采用不加命名空间和作用域运算符的写法,因为自己构建的命名空间一般不会和std中的名字冲突

cin和其他的istream对象还可以用于条件判断

void cinwhiletest()
{int a,sum=0;while(cin>>a) {sum+=a;cout<<"sum is "<<sum<<endl;}
}

当输入的a值不为int时(输入非int值或者文件结束符),条件判断为false,退出循环,Ubuntu下按下CTRL+D为文件结束符

5.有符号类型和无符号类型

当有符号类型的数据和无符号的类型的数据混用时,会把表达的最终结果转化为无符号数据,然后输出

void signedunsigned()
{int a=-11;unsigned b=10,c=12;cout<<a+b<<endl;cout<<b-c<<endl;
}

a+b结果不是-1,而是4294967295,表明将-1转化为unsigned,结果是4294967295

b-c的结果不是-2,而是4294967294,由于-2不在unsigned的范围内,所以结果是4294967294

所以,不要混用无符号数据和有符号数据,以及不要用无符号数据来判断是否小于零

6.字面值常量

字面值常量的值一望而知,比如 20, 023, 0x29, ‘a’, “str”…

7.变量的初始化和赋值

初始化的含义是创建一个变量并给该变量一个初始值。
而赋值是把变量中原来的值擦除,用一个新的值替换

 int a=0;//初始化,创建a,并给a一个初始值 a=1//赋值,用1替换0

对C++来说,基本内置类型(int float double char bool …)的初始化和赋值差别不大,但是对于非基本内置类型和自己定义的类来说,初始化和赋值是两个完全不同的操作。

C++中还有一种初始化叫默认初始化(只创建一个变量或者对象,但是不初始化)

void defaultinit()
{int a;float b;cout << a <<endl<<b<<endl;string s;cout<<s<<endl;
}

对于基本内置类型来说,这种操作会产生无效数据(垃圾值),所以,对于内置基本类型,不要默认初始化

对于非内置基本类型和自己定义的类,可以使用默认初始化,因为类的初始值会由构造函数来决定,所以string产生了空串。

8.变量的作用域

当变量名相同时,C++会向上查找,就近选择变量名,下面代码仅用来说明,实际编程时,要避免变量名重复

int a=50
void testscope()
{cout<<a<<endl;//此时a向上查找,发现最近的a是50int a=0;//覆盖全局acout<<a<<endl<<::a<<endl;//第一个a向上查找,发现最近的a是0,如果想访问全局a,要加作用域符号
}

从结果来看,变量的作用域(有效范围)总是就近的,就近的同名变量作用域会覆盖远的同名变量的作用域

9 求余运算符的符号

m%n,符号和m一致

void getremainder()
{cout<<5%3<<endl<<5%-3<<endl<<-5%3<<endl<<-5%-3<<endl;
}

10.关于sizeof

sizeof用来返回字节所占空间的大小,但是并不计算对象的实际值,所以sizeof的对象可以无效(比如是一个空指针)

void testsizeof()
{cout<<sizeof(nullptr)<<endl;
}

另外,可以用sizeof来计算数组的长度

void testsizeof()
{int nums[20]={0};cout<<sizeof(nums)/sizeof(*nums)<<endl;
}

11.switch case语句漏写break

switch case语句的执行机制就是当匹配到任何一个case后,顺序执行后续所有的代码,除非添加break中断。

所以,在switch case语句漏写break会产生逻辑错误


```cppvoid nobreakinswitchcase(){char c;cin>>c;int a=0,e=0,i=0,o=0,u=0,d=0;switch(c) {case 'a':++a;case 'e':++e;case 'i':++i;case 'o':++o;case 'u':++u;default:++d;}cout<<a<<","<<e<<","<<i<<","<<o<<","<<u<<","<<d<<endl;}

通过上述结果,可以发现,在匹配到对应的case后,代码会顺序执行后面所有的代码,所以,要在switch case语句中的每个条件执行完后,添加break语句

相关文章:

C++ Primer笔记001:标准输入输出/基本数据/流程控制语句

文章目录 1.标准输入cin&#xff1a;2.标准输入cout&#xff1a;3.endl&#xff1a;4.命名空间&#xff08;namespace)&#xff1a;5.有符号类型和无符号类型6.字面值常量7.变量的初始化和赋值8.变量的作用域9 求余运算符的符号10.关于sizeof11.switch case语句漏写break 1.标准…...

【C++进阶之路】IO流

文章目录 一、C语言的IO1.键盘与显示屏2. 文件与内存3.字符串与内存 二、CIO1.iostream1.1基本使用1.2operator bool 2. fstream2.1二进制的文件读写2.2字符串的文件读写 3. sstream3.1序列化与反序列化3.2拼接字符串3.3将数据类型转换为字符串 总结 一、C语言的IO 1.键盘与显…...

$GNGGA,传感器传输的数据解析

每一秒传输这一帧数据如下&#xff1a; $GNGGA,090022.000,3959.82136,N,11628.16507,E,1,06,3.5,21.4,M,0.0,M,,*4D $GNGLL,3959.82136,N,11628.16507,E,090022.000,A,A*4F $GPGSA,A,3,03,16,26,,,,,,,,,,4.1,3.5,2.1*32 $BDGSA,A,3,07,21,42,,,,,,,,,,4.1,3.5,2.1*21 $GPGSV…...

javaEE - 2(11000字详解多线程)

一&#xff1a;多线程带来的的风险-线程安全 线程安全的概念&#xff1a;如果多线程环境下代码运行的结果是符合我们预期的&#xff0c;即在单线程环境应该的结果&#xff0c;则说这个程序是线程安全的。 当多个线程同时访问共享资源时&#xff0c;就会产生线程安全的风险&am…...

easyphoto 妙鸭相机

AIGC专栏7——EasyPhoto 人像训练与生成原理详解-CSDN博客如何训练一个高品质的人像Lora与应用高品质Lora的链路对于写真生成而言非常重要。由《LoRA: Low-Rank Adaptation of Large Language Models》 提出的一种基于低秩矩阵的对大参数模型进行少量参数微调训练的方法&#x…...

【Qt控件之QMdiArea】介绍及使用

描述 QMdiArea小部件提供了一个区域&#xff0c;用于显示MDI窗口。QMdiArea的功能类似于MDI窗口的窗口管理器。例如&#xff0c;它在自身上绘制和排列管理的窗口&#xff0c;可以按级联或平铺模式排列它们。通常&#xff0c;QMdiArea被用作QMainWindow的中心小部件&#xff0c…...

Linux网络编程-极简HTTPUDP服务器

HTTP服务器 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h>#define PORT 8080 #define BUFFER_SIZE 2048void handle_client(int client_socket) {char buffer[BUFFER_SIZE];recv(cl…...

虚拟化、容器与Docker基本介绍以及安装部署(Docker 基本管理)

目录 1 Docker 概述 1.1 Docker与虚拟机的区别 1.2 容器在内核中支持2种重要技术 1.3 Docker核心概念 2 安装 Docker 2 Docker 镜像操作 2.1 搜索镜像 2.2 获取镜像 2.3 镜像加速下载 2.4 查看镜像信息 2.4.1 查看下载的镜像文件信息 2.4.2 查看下载到本地的所有镜像…...

Spring Boot中捕获异常错误信息并将其保存到数据库中

Spring Boot中捕获异常错误信息并将其保存到数据库中: 1.创建数据库表&#xff1a; 首先&#xff0c;您需要创建一个用于存储异常信息的数据库表。可以使用SQL脚本或者使用Hibernate实体类来创建表。以下是一个用于存储异常信息的表的示例SQL&#xff1a; CREATE TABLE erro…...

CNN记录】pytorch中flatten函数

pytorch原型 torch.flatten(input, start_dim0, end_dim- 1) 作用&#xff1a;将连续的维度范围展平维张量&#xff0c;一般写再某个nn后用于对输出处理&#xff0c; 参数&#xff1a; start_dim&#xff1a;开始的维度 end_dim&#xff1a;终止的维度&#xff0c;-1为最后…...

科普长文--网络安全拟态防御技术概念及应用

网络安全拟态防御技术概念 什么是网络安全拟态防御? 网络安全拟态防御技术是一种基于生物拟态原理,利用动态异构冗余构造、拟态伪装机制、测不准效应等手段,实现网络空间的主动防御和内生安全的技术。它是由中国工程院院士邬江兴首创的,旨在应对网络空间中的各种未知威胁…...

框架篇

一、Spring中的单例Bean是线程安全的吗 二、AOP相关面试题 三、Spring中的事务 四、Spring中事务失效的场景有 五、Spring bean的生命周期 六、Spring的循环依赖 七、SpringMVC的执行流程 八、自动配置原理 九、Spring框架常见的注解 十、Mybatis的执行流程 十一、MyBatis延迟加…...

Spring MVC(中)

1、Spring MVC视图&#xff1a; SpringMVC中的视图是View接口&#xff0c;视图的作用渲染数据&#xff0c;将模型Model中的数据展示给用户 SpringMVC视图的种类很多&#xff0c;默认有转发视图和重定向视图 当工程引入jstl的依赖&#xff0c;转发视图会自动转换为JstlView …...

10月19日,每日信息差

今天是2023年10月19日&#xff0c;以下是为您准备的17条信息差 第一、中国海洋石油遭南向资金净卖出2.38亿港元 第二、阅文集团侯晓楠&#xff1a;网文已经成为中国文化的一张全球名片。据了解&#xff0c;2022年以来&#xff0c;阅文已经在海外上线了自制的300多部动漫影视作…...

【VSCode】解决Open in browser无效

问题描述&#xff1a; 在VSCode中无论是点击右键&#xff0c;选择在默认浏览器中打开&#xff0c;还是按快捷键alt b都没有反应。 解决办法&#xff1a; 右击文件 --> 在文件资源管理器中显示 右击文件&#xff0c;选择属性 点击更改 选择用默认浏览器打开 最后 此时…...

测试饱和了? 大数据测试就业薪资和前景究竟怎么样?

随着不断有转行人员及毕业的大学生进入IT行业&#xff0c;在很多外界人眼里&#xff0c;这个行业的“缺口”已满&#xff0c;人员趋于饱和&#xff0c;但事实真的这样吗&#xff1f;还真没有。只是最基础的岗位需求在慢慢变少了&#xff0c;但行业中比较深的细分岗位&#xff0…...

DDR3笔记 频率配置

可参考 基于FPGA的DDR3设计&#xff08;2&#xff09;DDR3各时钟频率及带宽分析 - 知乎 (zhihu.com) DDR3的时钟频率配置要看两个手册&#xff1a; 1.DDR3器件的手册。 2.开发板芯片的手册 器件 器件名称&#xff1a;MT41J128M16JT-125:K tCK 1.25ns&#xff0c;就可以算出…...

数据结构与算法-(10)---列表(List)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

Node-Web模块的用法

题记 node.js中web模块的用法&#xff0c;以下是具体操作过程和代码。 Web服务器一般指网站服务器&#xff0c;是指驻留于因特网上某种类型计算机的程序&#xff0c;Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL&#xff0c;与客户端的…...

基于TCP的RPC服务

TCP服务器上的RPC&#xff0c;通过创建一个服务器进程监听传入的tcp连接&#xff0c;并允许用户 通过此TCP流执行RPC命令 -module(tr_server). -author("chen"). -behaviour(gen_server).%% API -export([start_link/1,start_link/0,get_count/0,stop/0 ]).-export(…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...