单从语法上讲,C++继承了C中几乎所有的关键字,因此在C++中使用C语言完全没有问题。需要注意的是,printf() 和 scanf() 是库函数,他们并不是C语言的一部分。比如,你不包含头文件stdio.h的时候便无法使用他们,但int,while,for等关键字仍然可以使用。在C++中使用C语言的库函数时,在包含头文件的部分,需要作一些变更:我们使用 #include <cstdio>,而不是 #include <stdio.h>。这对于C中的其他头文件也一样,比如 <ctype.h> , <string.h> 在C++中都要用 <cctype> 和 <cstring> 代替。
学习语言时我们最先接触的总是程序框架,之后学习的内容只需在此之上进行添加和修改:
#include <iostream>
using namespace std;
int main()
{
return 0;
}
这是C++的基本框架,它和C的:
#include <stdio.h>
int main()
{ return 0;
}
稍有不同。我们各自包含了他们的一个基本库函数的头文件,它们各自含有C++和C中的输入输出函数。对C而言,我们用下面的程序进行输入输出:
#include <stdio.h>
int main()
{
int n;
if(scanf("%d", &n))
printf("I entered a number %d to n.\n", n);
return 0;
}
我在这里很矫情地使用了if语句,提醒大家scanf()是有返回值的,它返回正确读入变量的个数。而在C++中,我们这么干:
#include <iostream>
using namespace std;
int main()
{
int n;
if(cin >> n)
cout << "I entered a number " << n << " to n.\n";
return 0;
}
不难猜出cin和cout的作用,它们和scanf()还有printf()的作用是类似的。而且十分方便,我们终于不用记忆那些繁琐的格式说明符了,C++中的cin和cout会自动判别n是一个in型变量。需要注意的是 >>和<< 是C++中的操作符。另外,if(cin >> n)是有些奇怪的,scanf()有返回值,但cin >> n是个什么东西?它有值么?事实上cin是一个对象,它和 >> 构成了操作符重载,重载函数的返回值是对象本身。头晕么?这涉及到函数重载的内容,在此暂时不作探讨。但我们要知道,这么用cin是合理的:cin >> n >> m;(m假设已声明。) 可以这么理解(cin >> n) >> m (cin >> n)就是cin。这表示依次向n和m中输入,至于m是个什么类型变量,这个cin它会知道的,并会按照这种类型的标准向其输入,就像用了对应了各式说明符一样,这和cout一致。值得一提的是,C++中多了:using namespace std;这行代码。你会发现using和namespace都是关键字,它们是C++中的,在C中无法使用。这个语句声明了一个名称空间std,cout和cin是这个空间中的名称,想想看如果没有这行会发生什么?你的IDE会报错,说cout和cin是没有被声明的变量。这和C中包含头文件的用意很相似。在C中,printf()和scanf()这两个函数可以直接使用,因为它们的定义和声明都已经在别处存放。但是我们要使用#include <stdio.h>,这个文件中包含了它们的声明。而在C++中,你可以把变量或者类也这么做。比如,你将一个叫做SHIT的变量声明在一个叫做stshit的名称空间中,你只要使用了using namespace stshit; 就可以直接使用这一坨翔而不用声明。而声明一个名称空间是后面的内容。事实上根据以上的内容,你在C中能写的程序,在C++中已经可以照搬了,C++提供了全新的输入输出手段。至于C语言中的函数部分(特别是参数传递中的形参和实参等),变量的作用域等,在C++中依然没有任何变化,但都是重要的内容。在此给出一个实例程序供大家熟悉C++:#include <iostream>
using namespace std;
int main()
{
int n;
cout << "If you give a num to n,"
<< " I will return you a sum from 1 to n(0 to quit).\n"
<< "n: ";
while(cin >> n) {
if(!n) break;
int sum = 0;
for(int i = 1; i <= n; i++)
sum += i;
cout << "sum: " << sum << endl
<< "Enter n again: (0 to quit) ";
}
return 0;
}