C++学习(二)

news2024/12/24 12:30:38

我们是在学习过了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++特有形式

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

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

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

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

相关文章

React(2): 使用 html2canvas 生成图片

使用 html2canvas 生成图片 需求 将所需的内容生成图片div 中包括 svg 等 前置准备 "react": "^18.2.0","react-dom": "^18.2.0","html2canvas": "^1.4.1",实现 <div ref{payRef}></div>const pa…

Character Controller Smooth

流畅的角色控制器 Unity的FPS解决方案&#xff01; 它是一种具有非常平滑运动和多种设置的解决方案&#xff1a; - 移动和跳跃 - 坐的能力 - 侧翻角度 - 不平整表面的处理 - 惯性守恒 - 重力 - 与物理物体的碰撞。 - 支持没有家长控制的平台 此解决方案适用于那些需要角色控制器…

Spring Boot 整合 MinIO自建对象存储服务

GitHub 地址&#xff1a;GitHub - minio/minio: The Object Store for AI Data Infrastructure 另外&#xff0c;MinIO 可以用来作为云原生应用的主要存储服务&#xff0c;因为云原生应用往往需要更高的吞吐量和更低的延迟&#xff0c;而这些都是 MinIO 的优势。安装过程跳过。…

(七)独立按键

文章目录 独立按键原理图三行代码法简单概述代码书写键码推算如何使用短按键长按键 状态机法简单概述代码书写键码推算如何使用短按键长按键 现象 独立按键原理图 三行代码法 简单概述 代码书写 u8 Trg 0x00;//短按键 u8 Cont 0x00;//长按键 void BtnThree(void) {u8 reada…

李沐机器学习系列2--- mlp

1 Introduction LP中有一个很强的假设&#xff0c;输入和输出是线性关系&#xff0c;这一般是不符合事实的。 通过几何的方式去对信息进行理解和压缩是比较高效的&#xff0c;MLP可以表示成下面的形式。 1.1 从线性到非线性 X ∈ R n d X \in R^{n \times d} X∈Rnd表示输入…

2023-12-26分割回文串和子集以及子集II

131. 分割回文串 思想&#xff1a;回溯三步骤&#xff01;① 传入参数 ② 回溯结束条件 ③ 单层搜索逻辑&#xff01;抽象成回溯树&#xff0c;树枝上是每次从头部穷举切分出的子串&#xff0c;节点上是待切分的剩余字符串【从头开始每次往后加一】 class Solution:def partiti…

基于混合蛙跳算法优化的Elman神经网络数据预测 - 附代码

基于混合蛙跳算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于混合蛙跳算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于混合蛙跳优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

ChatGPT持续火热,OpenAI年收入突破16亿美元

著名科技媒体The Information消息&#xff0c;由于OpenAI的ChatGPT等产品实现强劲增长&#xff0c;其年收入将突破16亿美元。 这主要得益于OpenAI在2023年发布了一系列重磅产品&#xff0c;包括GPT-4、ChatGPT企业版、GPT-4 Turbo、DALLE 3、苹果/安卓应用、自定义GPTs、Assis…

测试人必看,看完必会的fiddler抓包,抓包抓的好........

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

ELF文件信息一览

准备开个专栏&#xff0c;记录《从零开始实现链接器》的学习过程&#xff0c;先占个坑。 之前一直想把自己的学习过程记录在个人博客网站上&#xff0c;但这个要自己维护&#xff0c;上传图片什么的比较麻烦。关键是没有人互动&#xff0c;自己也没有怎么去看&#xff0c;慢慢的…

麒麟云增加计算节点

一、安装基座系统并配置好各项设置 追加的计算节点服务器&#xff0c;安装好系统&#xff0c;把主机名、网络网线&#xff08;网线要和其他网线插的位置一样&#xff09;、hosts这些配置好&#xff0c;在所有节点的/etc/hosts里面添加信息 在控制节点添加/kylincloud/multinod…

解决Redis序列化乱码问题

如果我们使用原生的JDK序列化&#xff0c;那么当我们将数据存储到Redis中就会出现乱码的情况 为了解决这个问题我们需要重写RedisTemplate从而解决序列化乱码问题 首先在Maven中引入相应的依赖 <dependency> <groupId>com.fasterxml.jackson.core</group…

交换机01_以太网

1、交换机工作原理 交换机是数据链路层的设备&#xff0c;数据链路层传输的是数据帧&#xff0c;所以封装的是MAC头部&#xff08;主要有源MAC地址和目的MAC地址&#xff09; 2、数据链路层的功能&#xff1a; 建立逻辑连接&#xff0c;进行物理地址寻址&#xff0c;差错校验…

CMake入门教程【核心篇】安装(install)

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「本文的内容」&#xff1a;CMake入门教程 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&#x1f4dd; 文章目录 1. 概述2. 使用方法2…

基于头脑风暴算法优化的Elman神经网络数据预测 - 附代码

基于头脑风暴算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于头脑风暴算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于头脑风暴优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

软碟通UltraISO制作U盘安装Ubuntu

清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/ 从里面下载ubuntu-22.04-desktop-amd64.iso UltraISO是一款非常不错的U盘启动盘制作工具&#xff0c;一直被许多网友们所喜欢&#xff0c;使用简单、方便。 UltraISO官方下载地址&#xff1a;https://cn.ultrais…

Halcon顶帽运算与底帽运算的应用

Halcon顶帽运算与底帽运算的应用 文章目录 Halcon顶帽运算与底帽运算的应用1. 提取小的物件2. 校正非均匀光照 正如上文所说的&#xff0c;顶帽运算返回的像素部分是尺寸比结构元素小的&#xff0c;并且比较亮的局部小区域&#xff1b;底帽运算返回的像素部分是尺寸比结构元素小…

【EI会议征稿通知】第三届艺术设计与数字化技术国际学术会议( ADDT 2024)

第三届艺术设计与数字化技术国际学术会议( ADDT 2024&#xff09; 2024 3rd International Conference on Art Design and Digital Technology 所谓艺术设计&#xff0c;就是将艺术的审美感应用到与日常生活密切相关的设计中&#xff0c;使其不仅具有审美功能&#xff0c;而且…

Arduino定时器和定时器中断

目录 一、定时器中断库函数方式说明 1、定时器中断编号和引脚说明 2、库文件安装 3、MsTimer2库文件使用 4、TimerOne库文件使用 5、注意事项 二、定时器的寄存器配置说明 1、定时器寄存器列表说明 2、Timer0寄存器说明 3、预分频系数与比较匹配器 4、定时器模式 …

天津大数据培训机构 大数据时代已到来!

大数据时代已经来临&#xff0c;越来越多的人开始关注大数据&#xff0c;并且准备转行大数据。但是&#xff0c;对于一个外行人或者小白来说&#xff0c;大数据是什么&#xff1f;大数据需要学什么&#xff1f;什么样的大数据培训机构是靠谱的&#xff1f;这几个简单的问题就足…