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++特有形式

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

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

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

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

相关文章

深度学习|5.2 偏差和方差

偏差和方差 Bias&#xff08;偏差&#xff09;&#xff1a;偏差是指对样本点的估计值和实际值的偏离程度。偏差越大&#xff0c;样本点越不符合实际值。偏差衡量单个数据点的偏离程度&#xff0c;如下图的第二行。 Variance&#xff08;方差&#xff09;&#xff1a;方差能代表…

希尔排序算法——交换法

希尔排序&#xff0c;又称缩小增量排序&#xff0c;是插入排序的改进版。它是因DL&#xff0e;Shell于1959年提出而得名。希尔排序的实质就是分组插入排序&#xff0c;该方法是非稳定的排序算法。 具体来说&#xff0c;希尔排序通过将待排序序列分成多个子序列&#xff0c;分别…

罗技k380连不上蓝牙?

我一直以为是键盘锁住了&#xff0c;或者我按一些键 什么的可以解决&#xff0c;但是都没用。 解决方案&#xff1a;由于我把键盘放在了金属表面 &#xff0c;导致蓝牙失灵。 在官网上找到的解决方案&#xff0c;连接放在这里&#xff0c;里面还提到了不能在一些特殊的地方操…

大数据Doris(四十九):Doris数据导出介绍

文章目录 Doris数据导出介绍 一、​​​​​​​使用示例

CMake入门教程【核心篇】引用子模块.cmake文件(include)

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「本文的内容」&#xff1a;CMake入门教程 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&#x1f4dd; 文章目录 include子模块举个例…

C#编程-使用构造函数和析构函数

使用构造函数和析构函数 如果想要在以创建对象时就初始化成员变量,可以创建名为构造函数的特殊函数。您可能还需要使用对象后从内存中删除这些对象。这可通过称为析构函数的函数实现。 实现构造函数 构造函数是在创建对象时自动调用的特殊方法。无须显式地调用构造函数。请…

使用MQTT.JS创建一个网页版的MQTT客户端

一、MQTT.JS介绍 MQTT.js 是一个开源的 MQTT 协议的客户端库&#xff0c;使用 JavaScript 编写&#xff0c;主要用于 Node.js 和 浏览器环境中。是JavaScript 环境下的 MQTT 客户端库。可以用于微信小程序、支付宝小程序等定制浏览器环境。 我们可以直接在HTML文件中进行调用…

CMake是什么?为什么学习CMake

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

RK3566 ANDROID 11 平台上适配移远EC200A

适配前理清楚一下调试的流程&#xff1a; 1.该模块为LGA封装&#xff0c;需要控制上电时序模块才能正常上电工作&#xff1a; 2.模块供电正常后&#xff0c;读取模组的PID 和VID 并将其ID添加到内核里面&#xff0c;确保USB转Serial端口能够正常生成: 3.生成ttyUSB0~ttyUSB2…

【报错解决】TypeError: __init__() got an unexpected keyword argument ‘size‘

报错描述 我在使用Doc2vec训练模型时&#xff0c;遇到了这一报错&#xff0c;相应的代码及报错信息如下所示&#xff1a; #代码model Doc2Vec(x_train, min_count5, window5, sizesize, sample1e-4, negative5,workersmultiprocessing.cpu_count())#报错信息TypeError: __in…

Redis(二)

1、redis的持久化 "Redis 如何将数据写入磁盘"&#xff0c;首先要明白的时候&#xff0c;我们使用的redis的数据保存在内存上的&#xff0c;也就是说&#xff0c;只要我们的电脑关机或者重启服务器&#xff0c;那么在内存中的数据就会消失&#xff0c;所以要想持久化…

06.02 customizing plots with style sheets

使用 style 来配置 pyplot 风格 import matplotlib.pyplot as plt import numpy as np%matplotlib inlinestyle 是 pyplot 的一个子模块&#xff0c;方便进行风格转换&#xff0c; pyplot 有很多的预设风格&#xff0c;可以使用 plt.style.available 来查看&#xff1a; plt.…

浅谈命令模式

命令模式是一种行为设计模式&#xff0c;用于将一个请求封装成一个对象&#xff0c;从而使得请求的发送者和接收者解耦&#xff0c;并支持对请求进行参数化、队列化、撤销和重做等操作。 在命令模式中&#xff0c;有一下介个关键角色&#xff1a; Command&#xff08;命令&am…

ubuntu 卸载桌面

要卸载Ubuntu上的桌面环境&#xff0c;您可以按照以下步骤进行操作&#xff1a; 登录到您的Ubuntu系统&#xff0c;并打开终端。 确认您当前正在使用的桌面环境。可以运行以下命令来查看已安装的桌面环境&#xff1a; s /usr/share/xsessions/ 根据您当前使用的桌面环境&…

爆肝整理,接口性能测试总结,一篇直接上高速...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、 性能测试术语…

初级前端算法

题目1 题目描述&#xff1a; 找出数组中的最大值 输入&#xff1a; [3, 9, 2, 5, 1] 输出&#xff1a; 9 JavaScript解答&#xff1a; function findMaxValue(arr) {let max arr[0];for (let i 1; i < arr.length; i) {if (arr[i] > max) {max arr[i];}}return m…

新概念英语第二册(18)

【New words and expressions】生词和短语&#xff08;3&#xff09; pub n. 小酒店 landlord n. 店主 bill n. 帐单 【Text】 After I had had lunch at a village pub, I looked for my…

【量化】商品期货换月的处理思路(old)

商品期货存在换月的情况&#xff0c;即期货合约是有到期日的&#xff0c;如果不想实物交割就得将持仓转换到之后的合约上&#xff0c;而不同月份的价格是不一样的&#xff0c;也就是不连续的&#xff0c;在回测中需要处理换月带来的跳空&#xff1a; 比如上图中的PG是逐月换月…

const的基础用法

#include<iostream> using namespace std;void main() {const int a 0;int const b 1;//一样const int * c;//const修饰的是指针所指向的内存空间(即值)&#xff0c;不能被修改int* const d NULL;//const修饰的指针变量不能被修改const int* const eNULL;//const修饰的…

uni-app 从入门到精通 3天快速掌握 文字版 学习专栏

大家好&#xff0c;我是java1234小锋老师。 近日锋哥又卷了一波课程&#xff0c;uni-app 从入门到精通 3天快速掌握教程&#xff0c;文字版视频版。三天掌握。 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从…