C++学习(二)

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

一.main函数区别

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

cpp 复制代码
main()
{

}

C++不能省略int:

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

二.输入输出对比

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

cpp 复制代码
#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,

cpp 复制代码
cout << 1234 << endl;

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

三.变量名的对比

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

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

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

cpp 复制代码
#include <iostream>
using namespace std;
int main()
{
	char sname;
	int iage;
}

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

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

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

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

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

而在C语言中:

cpp 复制代码
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,如下:

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

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

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

补充:

cpp 复制代码
cout << '\n';

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

六.char 类型扩展

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

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

cpp 复制代码
#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,(注意:大小写)

例如:

cpp 复制代码
#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输出,但是我们还是来看看吧!

cpp 复制代码
#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语言中,我们是这样转换的:

cpp 复制代码
short a=10000;
printf("%d\n",(int)a);

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

cpp 复制代码
	int a = 0;
	(long)a;//C语言形式
	long(a);//C++特有形式

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

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

相关推荐
zmd-zk7 分钟前
kafka命令的使用——主题命令(topic)
大数据·分布式·学习·kafka
就是有点傻11 分钟前
C#中面试的常见问题005
开发语言·面试·c#·wpf
pzn250619 分钟前
蓝桥杯练习题
c++·算法·蓝桥杯
Octopus207720 分钟前
【Linux】vim的使用
linux·笔记·学习·vim
Zafir202429 分钟前
Qt实现窗口内的控件自适应窗口大小
c++·qt·ui
red_redemption34 分钟前
自由学习记录(25)
学习·lua
捕鲸叉37 分钟前
C++设计模式之组合模式中适用缓存机制提高遍历与查找速度
c++·设计模式·组合模式
bylander1 小时前
【AI学习】Mamba学习(十八):S6的硬件感知设计
人工智能·深度学习·学习·机器学习
奶茶戒断高手1 小时前
【CSP CCF记录】201903-2第16次认证 二十四点
数据结构·c++·算法
一舍予1 小时前
nuxt3项目搭建相关
开发语言·javascript·vue.js·nuxt