第一个C++程序|cin和cout|命名空间

第一个C++程序

基础程序

使用DevC++5.4.0
写一个C++程序
在屏幕上打印hello world

#include <iostream>
using namespace std;int main()
{cout << "hello world" << endl;return 0;
} 

运行这个C++程序
F9->编译
F10->运行
F11->编译+运行

main函数

main函数是程序的⼊⼝,C++的程序不管有多少⾏代码,都是从main函数开始执⾏的,main函
数也被叫做主函数。
main前⾯的int表⽰main函数执⾏结束的时候返回⼀个整型类型的值,⽽在main函数的最后写return 0; 正好前后呼应。

  • main函数是程序的入口
  • main函数有且只有一个
  • 一个项目中可以有多个.cpp文件,但是只能有一个main函数(因为程序的入口只能有一个)

int - 数据类型 - 整型类型 - 表示整数

字符串

在C语⾔中,使⽤单引号括起来⼀个字符,表⽰字符字⾯值,即字符常量,⽐如: ‘1’ , ‘a’,使⽤双引号括起来多个字符表⽰⼀个字符串,⽐如: “abcdef” , “hello world” ,字符串中可以有⼀个或者多个字符,也可以没有任何字符, " " 表⽰空字符串。
上⾯代码中的 “hello world!” 就是⼀个字符串。这类字符和字符串表⽰的⽅式在C++也完全⽀持
的。
在C++的STL中⼜引⼊了string来表⽰字符串,功能更加强⼤,C语⾔不⽀持。

头文件

iostream 输入输出流,使⽤ #include <> 的形式进⾏包含。
iostream⽂件中的io指的是输⼊(进⼊程序的信息,简单理解就是可以给程序输⼊数据)
和输出(从程序中输出的信息,简单理解就是程序会打印数据在屏幕上)。
在C++程序中要完成输⼊和输出的操作会涉及到iostream⽂件中的多个定义,所以就要包含这个头⽂件。⽐如:代码中的cout是输出流对象,就是⽤来完成数据输出的,就需要包含头⽂件。
C++的编译器⾃带了很多头⽂件,每个头⽂件都⽀持⼀组特定的⼯具。
C++库函数相关头⽂件:C++ 标准库标头 - cppreference.com
在代码中如果使⽤了某个头⽂件中的定义,就得包含对应的头⽂件。

  1. 在C语⾔中头⽂件的扩展名是 .h ,但是C++中的⽤法发⽣了⼀些变化,对⽼式C的头⽂件保留了扩展名 .h ,但是C++⾃⼰的⽂件没有扩展名了。C语⾔头⽂件:C 标准库头文件 - cppreference.com
  2. 有些C的头⽂件被转换成C++头⽂件,这些⽂件名被重命名,去掉了.h扩展名,并在⽂件名的前⾯加上了前缀c(表⽰来⾃C语⾔);例如:C语⾔中有关数学的头⽂件名字是 math.h ,在C++中就是 cmath 。当然还得注意,有时头⽂件的C语⾔版本和C++版本相同,⽽有时候,新版本做了⼀些修改。
头文件类型约定实例说明
C++旧式风格以.h结尾<iostream.h>C++程序可以使⽤,⼀些新的IDE可能不再⽀持
C旧式风格以.h结尾<math.h>C、C++程序可以使用
C++新式风格没有扩展名<iostream>C++程序可以使用,使用namespace std
转换后的C加上前缀,没有扩展名<cmath>C++程序可以使用,可能包含不是C的特性
cin和cout初识

cout << "hello world!" << endl; 这句代码在上⾯的程序中是最重要的代码,其他所有的
代码都是为了编写这句代码。
代码中的 cout标准输出流对象(针对控制台,也就是屏幕),其实还有标准输⼊流对象(针对的是键盘) cin
cout 是告诉程序把后⾯双引号中的内容打印到标准输出设备(屏幕)上,双引号中的内容可以替换的。

#include <iostream>
using namespace std;int main()
{int num;       // num 其实是一块空间,可以存放一个整数 cin >> num;    // 输入操作, 输入一个整数存放在num中 cout << num;   // 输出操作, 将num中的值打印在屏幕上 return 0;
} 
  1. cin 和 cout 是全局的流对象,cin负责输⼊数据,cout负责输出数据。
  2. endl 是C++中⼀个特殊的操作符,效果是换⾏和刷新缓冲区,使⽤时必须包含在iostream头⽂件。
  3. << 是流插⼊运算符,和 cout 配合使⽤, >> 是流提取运算符,和 cin 配合使⽤。
  4. 使⽤C++输⼊输出更⽅便,不需要像 printf / scanf 输⼊输出时那样,需要⼿动控制格式。C++的输⼊输出可以⾃动识别变量类型。
#include <iostream>  
using namespace std;  int main()  
{  float score = 0;  cin >> score;       // 直接读取的就是浮点数  cout << score;      // 直接输出的就是浮点数  return 0;  
}  
名字空间

using namespace std; 这句代码的意思是:使⽤名字空间 std (名字空间也叫命名空间)。
为了理解什么是名字空间,名字空间要解决什么问题,⼤家先看⼀下下⾯的例⼦:

[!NOTE] eg
⼀个学校⾥学⽣可能有重名,假设这个学校有3个叫张三的同学,那么每次⽼师喊张三的时候,其他两个张三就会误会,是不是在喊⾃⼰,这就是因为这三个张三其实在同⼀个范围(空间)内的,就会名字的冲突。
但是如果这个学校的学⽣分为三个班,分别是1班、2班、3班,把三个张三分别安排在不同的班级,那么⽼师以后喊:1班的张三,那么2班、3班的张三就不会误会了,这是不是就很好的解决了名字冲突的问题。
Contents

其实这⾥的本质就是:

  1. 将名字进⾏了隔离
  2. 在使⽤名字之前先交待使⽤哪个班级的名字
    ![[Pasted image 20241228204425.png]]

在C++中,变量、函数和类都是⼤量存在的,这些变量、函数和类的名称如果都存在于全局作⽤域中,可能会导致很多冲突。使⽤ 名字空间 的⽬的是对标识符的名称进⾏隔离,以避免命名冲突或名字污染, namespace 关键字的出现就是针对这种问题的。
std 是C++标准库的名字空间名,C++将标准库的定义实现都放到这个命名空间中,当我们需要使⽤标准库中的内容时,就需要加上: using namespace std;当有了这句代码的时候,表⽰名字空间 std 中信息都是可⻅和可⽤的,⽐如: cin 、 cout 、 endl 等。
![[Pasted image 20241228211758.png]]

直接使⽤ using namespace std; 是⼀种简单粗暴的做法,直接这样使⽤,就意味着后续在std 这个名字空间中的各种定义都可以直接使⽤,但是我们往往只是使⽤部分。所以名字空间其实也可以这样使⽤:

#incldue <iostream>  int main()  
{  std::cout << "hello world" << std::endl;  return 0;  
}

代码中的 std::cout 的意思就是使⽤ std 名字空间中的 cout

注释

C++⾥主要有两种形式:单⾏注释 // 和多⾏注释 /* */
注释本来是对代码进⾏解释的⽂字,要放在代码中,但是⼜⽆需编译。注释是给程序员⾃⼰看的,编译器会忽略注释,基于注释是被编译器忽略的这个特点,在代码中有些代码不再需要的时候也会使⽤注释的⽅式屏蔽。
单⾏注释:指的是当前⾏不参与编译和运⾏
多⾏注释:指的是被包含在内的多⾏不参与编译和运⾏

在VS环境中注释和取消注释的快捷键: Ctrl + K + C , Ctrl + K + U
在DevC++中注释和取消注释的快捷键: Ctrl + /

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大模型】wiki中文语料的word2vec模型构建

在自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;词向量&#xff08;Word Embedding&#xff09;是一个非常重要的概念。通过将词语映射到一个高维空间中&#xff0c;我们能够以向量的形式表达出词语之间的语义关系。Word2Vec作为一种流行的词向量学习方法&#x…

1.RPC基本原理

文章目录 RPC1.定义2.概念3.优缺点4.RPC结构5.RPC消息协议5.1 消息边界5.2 内容5.3 压缩 6.RPC的实现6.1 divide_protocol.py6.2 server.py6.3 client.py RPC 1.定义 远程过程调用(remote procedure call) 2.概念 广义:所有通过网络进行通讯,的调用统称为RPC调用 狭义:不采…

强化特种作业管理,筑牢安全生产防线

在各类生产经营活动中&#xff0c;特种作业由于其操作的特殊性和高风险性&#xff0c;一直是安全生产管理的重点领域。有效的特种作业管理体系涵盖多个关键方面&#xff0c;从作业人员的资质把控到安全设施的配备维护&#xff0c;再到特种设备的精细管理以及作业流程的严格规范…

iOS 苹果开发者账号: 查看和添加设备UUID 及设备数量

参考链接&#xff1a;苹果开发者账号下添加新设备UUID - 简书 如果要添加新设备到 Profiles 证书里&#xff1a; 1.登录开发者中心 Sign In - Apple 2.找到证书设置&#xff1a; Certificate&#xff0c;Identifiers&Profiles > Profiles > 选择对应证书 edit &g…

基于单片机的大型家禽养殖基地智能环境控制系统构建

摘要:我国是一个大型家禽养殖大国,无论是大型家禽养殖数量或是大型家禽相关产品总量都位居世界前列。但是我国的大型家禽相关产品的市场竞争力却表现的差强人意,与一些发达国家的同类产品相比还有较大的差距。导致这一情况主要是因为我国很多大型家禽养殖基地往往只关注大型…

如何让Tplink路由器自身的IP网段 与交换机和电脑的IP网段 保持一致?

问题分析&#xff1a; 正常情况下&#xff0c;我的需求是&#xff1a;电脑又能上网&#xff0c;又需要与路由器处于同一局域网下&#xff08;串流Pico4 VR眼镜&#xff09;&#xff0c;所以&#xff0c;我是这么连接 交换机、路由器、电脑 的&#xff1a; 此时&#xff0c;登录…

视听语言与手机拍摄技巧

视听语言----------------------------------------- 景别&#xff1a;远全中近特 远景&#xff1a;人物只占画面很小的一部分&#xff0c;主要展示环境&#xff08;背景为画面主体&#xff0c;人物占画面很小的一部分&#xff09;–》定调子&#xff08;确定电影基调&#xf…

企业安全建设——安全防线框架建设(一)

前言 为什么会有此篇文章&#xff0c;早期的攻击&#xff0c;从弱口令&#xff0c;SQL注入&#xff0c;上传漏洞&#xff0c;演变到现在的反序列化&#xff0c;供应链&#xff0c;公私云&#xff0c;区块链等攻击方式&#xff0c;早期的防御方式从防火墙&#xff0c;防病毒&am…

(南京观海微电子)——GH7009开机黑屏案例分析

一、 现象描述&#xff1a; 不良现象: LVDS模组&#xff0c;开机大概2秒后就黑屏。 二、问题分析 等主机进入Kernel 后做以下测试&#xff1a; 1、手动reset LCM 后 可以显示正常&#xff1b; 总结&#xff1a; 1&#xff09;uboot 部分HS 太窄&#xff0c;仅有4个clk宽度&am…

第10章 初等数论

2024年12月27日一稿&#xff08;P341&#xff09; 2024年12月28日二稿 2024年12月29日三稿 当命运这扇大门向你打开的时候&#xff0c;不要犹豫和害怕&#xff0c;一直往前跑就是了&#xff01; 10.1 素数 这里写错了&#xff0c;不能整除应该表示为 10.2 最大公约数与最小公…

XXE漏洞 黑盒测试 白盒测试 有无回显问题

前言 什么是XXE&#xff08;xml外部实体注入漏洞&#xff09;&#xff1f; 就是网站以xml传输数据 的时候我们截取他的传输流进行修改&#xff08;网站没有对我们的输入进行过滤&#xff09; 添加恶意代码 导致数据传输到后台 后台解析xml形式 导致恶意代码被执行 几种常见的…

yolov5 yolov6 yolov7 yolov8 yolov9目标检测、目标分类 目标切割 性能对比

文章目录 YOLOv1-YOLOv8之间的对比如下表所示&#xff1a;一、YOLO算法的核心思想1. YOLO系列算法的步骤2. Backbone、Neck和Head 二、YOLO系列的算法1.1 模型介绍1.2 网络结构1.3 实现细节1.4 性能表现 2. YOLOv2&#xff08;2016&#xff09;2.1 改进部分2.2 网络结构 3. YOL…

NV-Embed详细技术解析

NV-Embed详细技术解析 1. 方法论 1.1 双向注意力 背景&#xff1a;解码器块中的因果掩码原本用于防止自回归文本生成时的信息泄露创新&#xff1a;在对比学习过程中移除因果注意力掩码优势&#xff1a;提升模型的表示能力,允许双向信息流动 1.2 潜在注意力层 动机&#xf…

jdk版本介绍

1.JDK版本编号 • 主版本号&#xff1a;表示JDK的主要版本&#xff0c;如JDK 8、JDK 11中的8和11。主版本号的提升通常意味着引入了重大的新特性或变更。 • 次版本号&#xff1a;在主版本号之后&#xff0c;有时会跟随一个或多个次版本号&#xff08;如JDK 11.0.2中的0.2&…

低代码开源项目Joget的研究——基本概念和Joget7社区版应用

大纲 1. 基本概念1.1 Form1.1.1 Form1.1.1.1 概述1.1.1.2 主要特点和用途1.1.1.3 创建和使用 Form1.1.1.4 示例 1.1.2 Section1.1.2.1 概述1.1.2.2 主要特点和用途1.1.2.3 示例 1.1.3 Column1.1.4 Field1.1.5 示例 1.2 Datalist1.2.1 Datalist1.2.1.1 主要特点和用途1.2.1.2 创…

【LeetCode 04】 209. 长度最小的子数组

暴力解法&#xff1a; 测试通过✅提交超时❌ class Solution {public int minSubArrayLen(int target, int[] nums) {//暴力解法int sum0;int subLength0;int resultInteger.MAX_VALUE;int lennums.length;for(int i0;i<len;i){//起始位置sum0;for(int ji;j<len;j){//终…

【已解决】图片png转ico格式

起因&#xff1a; pyinstaller 打包时需要 ico 格式图片&#xff0c;但是通常手上只有png格式的图片&#xff0c;为了将png转为ico&#xff0c;直接改后缀会报错“struct.error: unpack requires a buffer of 16 bytes”&#xff0c;我就上网搜了一下&#xff0c;发现都是一些…

Java 中 Stream 流的使用详解

Java 中 Stream 流的使用详解 什么是 Stream&#xff1f; Stream 是 Java 8 引入的一种全新的操作集合的方式。它支持通过声明性方式对集合进行复杂的数据操作&#xff08;如过滤、排序、聚合等&#xff09;&#xff0c;避免使用大量的 for 循环&#xff0c;提高代码的可读性…

AMD | GPU | 深度学习 | 如何使用

问题&#xff1a;我在复现代码的时候&#xff0c;发现自己只拥有AMD的GPU&#xff0c;对于一个硬件小白来说&#xff0c;怎么办呢&#xff1f;我想看看怎么使用&#xff1b;解决&#xff1a; 首先要安装支持AMD的GPU的pytorch&#xff0c;pytorch&#xff1b; 使程序在安装了支…

Blender高效优化工作流程快捷小功能插件 Haggis Tools V1.1.5

Haggis Tools V1.1.5 是一款专为Blender设计的插件&#xff0c;旨在优化工作流程、减少单调和重复的任务&#xff0c;从而为艺术家节省时间。这款插件适用于多个版本的Blender&#xff0c;能够有效提升工作效率。 Blender插件特点&#xff1a; 工作流程优化&#xff1a;专门设…