我们是在学习过了C语言,基础上来看这篇文章的,如果你是直接学C++,这篇文章不太适合你的,因为这里只讲C++基础中与C语言不同之处。
在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语言中如果要读取一个字符可以用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语言中换行符是‘\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';
换行符也可以用单引号,而不一定要双引号。
对于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++特有形式
其实还有其他四种形式,后面我们会讲解。
最后感谢大家的支持,我们共同努力!