C语言面向过程编程的语言;C++面向对象编程的语言。
两者有本质的区别,其实是完全不同的两种语言,只不过C++兼容C语言而已。
其中C++则一般看作是对C语言的扩展。因为C语言没有面向对象的语法结构,而当时业界又迫切需要面向对象的编程特性,所以贝尔实验室的开发者就为C语言添加了面向对象的结构。现在C++已经不只是C语言的扩展了,它已经完全可以被看作一种新的编程语言。虽然C语言的特性以及库函数仍然被C++支持,不过C++拥有自己的独立的类库体系,功能相当强大。
C/C++的优点在于与底层比较接近,可以控制的粒度更加精细,是开发系统级应用的最佳选择。关于跨平台,C/C++也是很好的语言,因为所有平台都支持,不同的是,不同平台支持的实现不同,类库不同,要编写跨平台的程序,需要选择跨平台的类库,如标准类库,如果标准类库的支持不够也只需要附加编写一个跨平台的支持类库。
如果你想学习C/C++可以来这个群,首先是六九六,中间是三九九,最后是二一零,里面有大量的学习资料可以下载,有问题也可以咨询我。
运算符
在应用程序中,经常会对数据进行运算,为此,C语言提供了多种类型的运算符,即专门用于告诉程序执行特定运算或逻辑操作的符号。根据运算符的作用,可以将 C语言中常见的运算符分为下图中的六大类。
算术运算符
在数学运算中最常见的就是加减乘除四则运算。C语言中的算术运算符就是用来处理四则运算的符号,这是最简单、最常用的运算符号。表 2-11列出了 C语言中的算术运算符及其用法。
算术运算符看上去都比较简单,也很容易理解,但在实际使用时还有很多需要注意的问题,具体如下:
1、进行四则混合运算时,运算顺序遵循数学中“先乘除后加减”的原则。
2、在进行自增(++)和自减(--)的运算时,如果运算符(++或--)放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算。
如果你想学习C/C++可以来这个群,首先是六九六,中间是三九九,最后是二一零,里面有大量的学习资料可以下载,有问题也可以咨询我。
请仔细阅读下面的代码块,思考运行的结果。
int num1 = 1; int num2 = 2;
int res = num1 + num2++;
printf("num2=%d" + num2);
printf("res=%d" + res);
上面的代码块运行结果为:num2=3,res=3,
具体分析如下:
第一步:运算 mum1+mun2++的结果,此时变量 mun1,mum2的值不变。
第二步:将第一步的运算结果赋值给变量 res,此时 res值为 3。
第三步:mum2进行自增,此时其值为 3。
3、在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有浮点数参与运算,系统会将整数数据隐形类型转换为浮点类型,最终得到的结果会是一个浮点数。
例如, 2510/1000 属于整数之间相除,会忽略小数部分,得到的结果是 2,而 2.5/10 的实际结果为 0.25。
请思考一下下面表达式的结果:
3500/1000*1000
所得结果为3000。由于表达式的执行顺序是从左到右,所以先执行除法运算 3500/1000,得到结果为 3,然后再乘以 1000,最终得到的结果就是 3000。
4、取余运算在程序设计中都有着广泛的应用,例如判断奇偶数的方法就是求一个数字除以 2 的余数是1 还是 0。在进行取余运算时,运算结果的正负取决于被余数(%左边的数)的符号,与余数(%右边的数)的符号无关。
如:(-5)%3=-2,而 5%(-3)=2。
赋值运算符
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。下表中列举了 C语言中的赋值运算符及其用法。
如果你想学习C/C++可以来这个群,首先是六九六,中间是三九九,最后是二一零,里面有大量的学习资料可以下载,有问题也可以咨询我。
在这个表中, “ = ” 的作用不是表示相等关系,而是赋值运算符,即将等号右侧的值赋给等号左侧的变量。在赋值运算符的使用中,需要注意以下几个问题
1、在 C 语言中可以通过一条赋值语句对多个变量进行赋值,具体示例如下:
int x, y, z;
x = y = z = 5; //为三个变量同时赋值
在上述代码中,一条赋值语句可以同时为变量 x、y、z赋值,这是由于赋值运算符的结合性为“从右向左”,即先将 5赋值给变量 z,然后再把变量 z的值赋值给变量 y,最后把变量 y的值赋值变量 x,表达式赋值完成。
需要注意的是,下面的这种写法在 C语言中是不可取的。
intx = y = z = 5;//这样写是错误的
2、在该表中,除了 “ = ”,其他的都是特殊的赋值运算符,接下来以“+=”为例,学习特殊赋值运算符的用法,示例代码如下:
int x=2;
x+=3;
上述代码中,执行代码 x += 3后,x的值为 5。这是因为在表达式 x+=3中的执行过程为:
(1)将 x的值和 3的执行相加。
(2)将相加的结果赋值给变量 x。
所以,表达式 x=+3就相当于 x = x + 3,先进行相加运算,在进行赋值。-=、*=、/=、%=赋值运算符都可依此类推。
多学一招:运算符的结合性
运算符的结合性指同一优先级的运算符在表达式中操作的结合方向,即当一个运算对象两侧运算符的优先级别相同时,运算对象与运算符的结合顺序。大多数运算符结合方向是“自左至右”。示代码如下:
a-b+c;
上述代码中表达式 a- b + c,b两侧有-和+两种运算符的优先级相同,按先左后右的结合方向, b先与减号结合,执行 a- b的运算,然后再执行加 c的运算。除了自左至右的结合性外, C语言还有三类运算符,它们分别是单目运算符、条件运算符和赋值运算符。以赋值运算符为例,具体代码如下所示:
a=b+c;
最后我来说一说了解C的必要性:
如果你想学习C/C++可以来这个群,首先是六九六,中间是三九九,最后是二一零,里面有大量的学习资料可以下载,有问题也可以咨询我。
1. 对内存和硬件的操作,是目前绝大部分高级语言所隐藏的,只有坚实C背景的同学,才可以考虑的更多,如果你想对原理有更多的了解,那么C其实是不可绕过的一个环节。
2. 想要缔造一个新的系统和语言,没有C是不行滴(或许C++勉强)。
3. 不管是OC的消息系统,Java的自动回收,Ruby的动态类扩充,这些花哨且时髦的东西,其实都可以用C来实现,而且很多都是用C来实现的,如果你想自己实施,看C吧。
4. 破解和分析程序,C可以起到很大的作用。C是可以人为创建Bug来破坏一个系统滴。
最后我引用我的一个大牛朋友的话:“请不要忽视C语言,它上可九天摘月,下可五洋捉鳖”。