C语言面向过程编程的语言;C++面向对象编程的语言。
两者有本质的区别,其实是完全不同的两种语言,只不过C++兼容C语言而已。
其中C++则一般看作是对C语言的扩展。因为C语言没有面向对象的语法结构,而当时业界又迫切需要面向对象的编程特性,所以贝尔实验室的开发者就为C语言添加了面向对象的结构。现在C++已经不只是C语言的扩展了,它已经完全可以被看作一种新的编程语言。虽然C语言的特性以及库函数仍然被C++支持,不过C++拥有自己的独立的类库体系,功能相当强大。
C/C++的优点在于与底层比较接近,可以控制的粒度更加精细,是开发系统级应用的最佳选择。关于跨平台,C/C++也是很好的语言,因为所有平台都支持,不同的是,不同平台支持的实现不同,类库不同,要编写跨平台的程序,需要选择跨平台的类库,如标准类库,如果标准类库的支持不够也只需要附加编写一个跨平台的支持类库。
while语句
while循环语句的基本语法:
while(表达式)
{
循环体;//或者称为语句块
}
语义:
判断表达式是否成立,如果成立,则执行循环体语句,否则跳过循环体语句;
例如:
求1加到100值:
#include<stdio.h>
int main
{
int i = 1;
intsum=0;
while( i<=100 )
{
sum=sum+i;
i++;
}
printf("d",sum);
return 0;
}
运行结果是: 5050
while循环需要注意的地方:
1.防止死循环,即确保循环体内存在可以改变表达式值的语句,如i++。
2.循环和if语句一样的地方是:大括号可以省略。但只能控制离它最近的一条语句。也就是说当循环体只有一条语句的的时候,可以省略大括号。但这条语句不能是声明语句(如:int num= 10; 这样则不行。)
do…while语句
do…while循环语句的基本语法
do{
循环体;//或者称为语句块
}while(表达式);
语义:
1.执行循环体
2.判断表达式是否成立,如果成立,则跳转到1,否则跳转到3;
3.跳出循环,循环结束。
所以do…while循环中,循环体至少会被执行1次。
用do…while求1加到100值:
#include<stdio.h>
int main
{
int i = 1,sum=0;;
do{
sum=sum+i
i++;
}while( i<=100 );
return 0;
}
for语句
for循环语句的基本语法
for(表达式1;表达式2;表达式3){
循环体;
}
语义:
1.执行表达式1
2.判断表达式2是否成立,如果成立,则跳转到3,否则跳转到5;
3.执行循环体,执行完毕,跳转到4;
4.执行表达式3,执行完毕,跳转到2;
5.跳出循环,循环结束。
用for语句求1加到100值:
#include<stdio.h>
int main
{
int i,sum=0;
for(i=1;i<=100 ;i++)
{
sum=sum+i
}
printf("%d",sum);
return 0;
}
for循环的其他格式:
表达式1、表达式2、表达式3都可以省略。
注意:
表达式2没写的话会进入死循环。就算表达式1、表达式3不写,也要记得写分号。
表达式1、表达式3可以写任意语句,要用逗号隔开。
小结
同一个问题,往往既可以用 while语句解决,也可以用 do-while或者for语句来解决,但在实际应用中,应根据具体情况来选用不同的循环语句。选用的一般原则是:
(1) 如果循环次数在执行循环体之前就已确定,一般用 for语句。如果循环次数是由循环体的执行情况确定的,一般用 while语句或者do- while语句。
(2) 当循环体至少执行一次时,用 do-while语句,反之,如果循环体可能一次也不执行,则选用while语句。
C++/C循环语句中,for语句使用频率最高,while语句其次,do语句很少用。
三种循环语句for、while、do-while可以互相嵌套自由组合。但要注意的是,各循环必须完整,相互之间绝不允许交叉。
最后我来说一说了解C的必要性:
1. 对内存和硬件的操作,是目前绝大部分高级语言所隐藏的,只有坚实C背景的同学,才可以考虑的更多,如果你想对原理有更多的了解,那么C其实是不可绕过的一个环节。
2. 想要缔造一个新的系统和语言,没有C是不行滴(或许C++勉强)。
3. 不管是OC的消息系统,Java的自动回收,Ruby的动态类扩充,这些花哨且时髦的东西,其实都可以用C来实现,而且很多都是用C来实现的,如果你想自己实施,看C吧。
4. 破解和分析程序,C可以起到很大的作用。C是可以人为创建Bug来破坏一个系统滴。
最后我引用我的一个大牛朋友的话:“请不要忽视C语言,它上可九天摘月,下可五洋捉鳖”。