C++学习(二)

我们是在学习过了C语言,基础上来看这篇文章的,如果你是直接学C++,这篇文章不太适合你的,因为这里只讲C++基础中与C语言不同之处。

一.main函数区别

在C语言中,我们写main函数是不是可以省略前面的int,但是在C++中,下面写法是会报错的:

main()
{

}

C++不能省略int:

同时,在C语言中main后面括号里面空着表示对是否接受参数保持沉默,而在C++中,main后面括号里面空着表示void,即不接受任何参数。

二.输入输出对比

C语言中,输入输出需要包含头文件#include <stdio.h>,C++需要用:

#include <iostream>
using namespace std;

所以,我们可以来了解C与C++头文件不同之处了!

C语言中:头文件都是以.h结尾,而在C++中,头文件分为以下两种:1.对C语言头文件的改写,本质上还是C标准库,如:#include <cmath>,这一部分主要就是去.h在首加上c。还有另一部分则是单属于C++自身的标准库,如#include <iostream>

大家可能会想下面这个问题:

在C语言中我们输出常量的值如1234,可以用%d表示大小,但是在C++中,如何知道输出的常量是short,int还是long,

cout << 1234 << endl;

其实,在C++中有如下规则,如果在int能够表示的情况下,是不会转换为其他的类型的,只有int不能够表示时,才会转换为long等其他类型。

三.变量名的对比

这是一个比较偏门的知识点,大家可以只要简单了解就行,我们知道C语言的变量命名只能有63个字符,但是在C++中是不一样的,可以unlimited。

说到这里,大家也可以了解下常见的C++命名规则,这里我就讲一种,大家可以自行去了解其他的:

在变量名前加上表示变量类型的字符,如i--表示int,c--表示char,s--表示字符串,b--表示bool类型,p--表示指针。如下:

#include <iostream>
using namespace std;
int main()
{
	char sname;
	int iage;
}

当然对变量的命名方法远不止于此,大家可能会根据实际需要来用不同命名规则,所以就不在详细介绍了。


四.C与C++字符读取与输出对比

在C语言中如果要读取一个字符可以用getchar,输出可以用putchar,字符串读取gets,输出是puts

但在C++则不同,用的是以下代码:

#include <iostream>
using namespace std;
int main()
{
	char ch;
	cin.get(ch);
	cout.put(ch);
	return 0;
}

而在C语言中:

int main()
{
    char arr[10] = { 0 };
    char ch = 0;
    ch = getchar();
    putchar(ch);
    gets(arr);
    puts(arr);
    return 0;
}

五.C++换行符与C对比

我们都知道在C语言中换行符是‘\n',而在C++中换行符既可以是'\n',也可以是endl,如下:

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

那么我们该如何去使用这两个换行符呢?

如果我们是要显示数字或者变量时要用换行,使用endl可能方便一些,如果是在使用字符时,用’\n'可能便捷一些。

补充:

cout << '\n';

换行符也可以用单引号,而不一定要双引号。

六.char 类型扩展

对于C++我们使用char可能解决不了8bit位的字节,如日文字符,大家可能都知道unicode,里面就有char表示不了的字符,在C语言中我们可能没有解决办法,但是在C++中,我们引入了宽字符类型,wchar_t,其占用空间大小可能是short也可能是int,但是肯定大于char,这就是宽字节类型。

处理wchar_t流,需要前缀L来表示,如下代码:

#include <iostream>
using namespace std;
int main()
{
	wchar_t a = L'P';
	wcout << a << endl;
	return 0;
}

注意:wchar_t的输入输出流也要改变,cin变成了wcin,cout变成了wcout。

但实际上,还存在另外两个char16_t和char32_t,前一个加前缀u,后一个加前缀U,(注意:大小写)

例如:

#include <iostream>
using namespace std;
int main()
{
	wchar_t a = L'P';
	wcout << a << endl;
	char16_t b = u'P';
	char32_t c = U'P';
	cout << b << endl;
	cout << c << endl;
	return 0;
}

注意:这两个输入输出流还是cin和cout。

七.小数位数如何保证

在C语言中如果我们想输出几位小数可以直接.3%f,那么在C++中cout如何来保证想要输出的位数呢?

cout.setf()是C++用来保证输出位数的,它可以将,保留有效位数覆盖,从而输出6位小数,当然也可以直接用printf输出,但是我们还是来看看吧!

#include <iostream>
using namespace std;
int main()
{
	float f = 3.14159265;
	cout << f << endl;
	cout.setf(ios_base::fixed, ios_base::floatfield);
	float f2 = 3.14159265;
	cout << f2;
	return 0;
}

八.类型转换

在C语言中,我们是这样转换的:

short a=10000;
printf("%d\n",(int)a);

当然这个在C++也适用的,但是C++本身也提供了一种新的形式。

	int a = 0;
	(long)a;//C语言形式
	long(a);//C++特有形式

其实还有其他四种形式,后面我们会讲解。

最后感谢大家的支持,我们共同努力!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DNS安全与访问控制

一、DNS安全 1、DNSSEC原理 DNSSEC依靠数字签名保证DNS应答报文的真实性和完整性。权威域名服务器用自己的私有密钥对资源记录&#xff08;Resource Record, RR&#xff09;进行签名&#xff0c;解析服务器用权威服务器的公开密钥对收到的应答信息进行验证。如果验证失败&…

React Hooks中useState的介绍,并封装为useSetState函数的使用

useState 允许我们定义状态变量&#xff0c;并确保当这些状态变量的值发生变化时&#xff0c;页面会重新渲染。 useState 返回值 const [state, setState] useState(initialState);useState 返回一个长度为 2 的数组。通常&#xff0c;我们这样定义状态变量&#xff1a; co…

Linux基本指令(1)

1.whoami 用于查看当前用户 2.pwd 用于查看当前目录 3.ls/ls -l​ 查看当前目录下的文件 ls -a 显示当前目录下的隐藏文件 4.clear 清屏 5.cd[路径] 切换路径 .当前路径 ..上级路径 ​ ​ 6.tree [目录] 当前目录下的文件以树形式打印出来 cd -返回最近跳转的目录 …

Unity 使用Sprite绘制一条自定义图片的线

Unity 使用Sprite绘制一条自定义图片的线 前言项目场景布置代码编写总结 运行效果感谢 前言 遇到一个需要绘制自定义形状的需求。那只能利用Sprite来绘制一条具有自定义图片的线&#xff0c;通过代码动态设置起点、终点以及线宽&#xff0c;实现灵活的线条效果。 项目 场景…

TDengine 荣获 2023 Frost Sullivan 客户价值领导力奖

近日&#xff0c;TDengine 被国际知名咨询公司沙利文&#xff08;Frost & Sullivan&#xff09;评为全球最佳工业数据管理解决方案&#xff0c;赢得了 2023 年客户价值领导力奖&#xff08;Frost & Sullivan duoxie&#xff09;&#xff0c;该奖项重点关注引领行业创新…

thinkadmin安装步骤

一,先cmd运行安装命令 ### 创建项目&#xff08; 需要在英文目录下面执行 &#xff09; composer create-project zoujingli/thinkadmin二,在confing中的database.php配置数据库 三,将仓库的data复制到app目录下 https://gitee.com/zoujingli/think-plugs-data 四,在cmd运…

RT-Thread学习

RT-Thread是以Apache License v2开源许可发布的物联网操作系统。 RT-Thread有十多年的历史&#xff0c;在开发过程中也放在Github上由大家协同开发&#xff0c;并发布一个个版本&#xff0c;导致不同人群面对多样的版本无从下手。 RT-Thread的版本/分支有以下几种可供选择&…

【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现

【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现 更新时间&#xff1a;2023-12-29 1 题目 赛题 B DNA 存储中的序列聚类与比对 近年来&#xff0c;随着新互联网设备的大量涌入和对其服务需求的指数级增长&#xff0c;越来越多的数据信息被产…

如何查找iPhone中所有的应用程序

Apple 的 App Store 共有约 200 万个适用于 iPhone 和 iPad 的应用程序。如果您像我们一样&#xff0c;您的 iOS 或 iPadOS 设备上可能有数十个应用程序&#xff0c;但没有机会将它们全部整理好。您很容易忘记主屏幕上应用程序图标的位置。 幸运的是&#xff0c;iPhone 和 iPa…

powershell 打开系统远程软件

点击powershell 输入mstsc.exe 输入远程服务器ip&#xff0c;用户名 、密码 即可 登录

el-select下拉框 change事件返回该项所有数据

主要代码 value-key <template><div><el-selectv-model"value"value-key"label"placeholder"请选择"change"selectChange"><el-optionv-for"item in options":key"item.label":label"…

微信小程序-页面开发

文章目录 微信小程序第二章2. 页面开发2.1 创建开发页面2.2 修改项目首页2.3 页面的结构和样式设计2.3.1 WXML结构设计2.3.1.1 什么是WXML2.3.1.2 WXML的常见标签2.3.1.3 WXML的特点 2.3.2 WXSS样式设计2.3.2.1 什么是WXSS 2.4 组件库的使用和自定义组件2.4.1 小程序中的组件分…

什么是简单请求?简单请求和跨域的关系

简单请求不会发生跨域 cors 预检请求&#xff0c;预检请求 Preflight Request 是用于验证是否允许非简单请求的一种 OPTIONS 请求。预检请求指示为了减少跨域请求的复杂性和延迟&#xff0c;不是说简单请求就一定不会报跨域错误。而是非简单请求跨域的概率大一些&#xff0c;所…

Calibre PEX Hspice Netlist提取步骤(数模芯片提取spice netlist流程)

在数模混合芯片中&#xff0c;通常模拟需要数字模块通过calibre工具来提取Hspice netlist用于功耗仿真。注意这里的spice netlist和做Calibre的spice netlist是不太一样的。 另外在做calibre pex时需要确保当前的design LVS已经pass。否则功耗仿真可能会不准。 Calibre LVS常…

Modbus转Profinet解决方案,轻松搭建工业通信“桥梁”

在工业自动化领域&#xff0c;Modbus和Profinet是两种常见的通信协议。由于许多现有的工业设备使用的是Modbus协议&#xff0c;而现代化的工业系统通常采用Profinet&#xff0c;所以将Modbus转换为Profinet成为了解决方案的一个重要需求。 Modbus转Profinet解决方案具体包括以下…

LeetCode994腐烂的橘子(相关话题:矩阵dfs和bfs)

题目描述 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子&#xff1b;值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单…

Linux下误删除后的恢复操作测试之extundelete工具使用

一、工具介绍 extundelete命令的功能可用于系统删除文件的恢复。在使用前&#xff0c;需要先将要恢复的分区卸载&#xff0c;以防数据被意外覆盖。 语法格式&#xff1a;extundelete [参数] 文件或目录名 常用参数&#xff1a; --after 只恢复指定时间后被删除的文件 --bef…

RTC模块在汽车电池管理系统中的优势

汽车行业目前正在经历一个巨大的时期&#xff0c;关键词是 “案例”。CASE是连接、自治、共享和电气的缩写。它 表明了该汽车制造商在日益数字化的世界中的战略方向。市场的 电动汽车正在快速增长&#xff0c;预计将有助于减少二氧化碳排放和对抗 全球变暖 在本文中&#…

STL——vector详解

目录 &#x1f4a1;基本概念 &#x1f4a1;存放内置数据类型 &#x1f4a1;存放自定义数据类型 &#x1f4a1;存放自定义数据类型指针 &#x1f4a1;vector容器嵌套容器 &#x1f4a1;vector构造函数 &#x1f4a1;vector赋值操作 &#x1f4a1;vector容量和大小 &…

ChatGPT学习笔记——大模型基础理论体系

1、ChatGPT的背景与意义 近期,ChatGPT表现出了非常惊艳的语言理解、生成、知识推理能力, 它可以极好的理解用户意图,真正做到多轮沟通,并且回答内容完整、重点清晰、有概括、有条理。 ChatGPT 是继数据库和搜索引擎之后的全新一代的 “知识表示和调用方式”如下表所示。 …