C语言是面向过程的,而C++是面向对象的
C和C++的区别:
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。
C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。
变量的数据类型
在应用程序中,由于数据存储时所需要的容量各不相同,因此,为了区分不同的数据,需要将数据划分为不同的数据类型。C语言中的数据类型有很多种,具体分类如下图所示。
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
从图中可以看出,C语言中的数据类型可分为 4 种,分别是基本类型、构造类型、指针类型、空类型。下面我们将针对基本数据类型进行详细地讲解。
整型变量
在程序开发中,经常会遇到 0 、-100 、1024 等数字,这些数字都可称为整型。整型就是一个不包含小数部分的数。在 C 语言中,根据数值的取值范围,可以将整型定义为短整型(short int)、基本整型(int)和长整型(long int)。下面列举了整数类型的长度及其取值范围。
从表中可以看出,整数类型可分为 short 、int 和 long ,这三种类型可以被 signed 和 unsigned 修饰。其中,被 signed 修饰的整数类型称为有符号的整数类型,被 unsigned 修饰的称为无符号的整数类型。它们之间最大的区别是无符号类型可以存放的正数范围比有符号类型中的范围大一倍。例如,int 的取值范围是-231~231-1,而 unsigned int 的取值范围是 0~232-1。默认情况下,整型数据都是有符号的,此时signed修饰符可以不用写。
需要注意的是,整型数据在内存中占的字节数与所选择的操作系统有关。虽然 C 语言标准中没有明确规定整型数据的长度,但 long 类型整数的长度不能短于 int 类型,short 类型整数的长度不能短于 int 类型。
刚刚我们了解了不同整数类型数据的取值范围,接下来我们通过一个案例来具体了解下:
#include
int main()
{
int a = 12345;
long b = -23456, sum1;
unsigned int c = 32800, sum2;
sum1 = b - a;
sum2 = c - b;
printf("sum1=%ld,sum2=%ld ",sum1,sum2);
return 0;
}
运行结果如下图所示:
结果是-35801,无符号整数类型 sum2 的结果是 56256。
实型变量
实型变量也可以称之为浮点型变量,浮点型变量是用来存储小数数值的。浮点型变量分为两种:单精度浮点数(float)、双精度浮点数(double),不过 double 型变量所表示的浮点数比 float型变量更精确。
上表中,列出了两种浮点数类型变量所占的空间大小和取值范围。在取值范围中,E表示以 10 为底的指数,E后面的“+”号和“-”号代表正指数和负指数,例如,1.4E-45表示 1.4*10-45。为了让读者更好地理解浮点型数据在内存中的存储方式,接下来以单精度浮点数为例进行详细讲解,如下图所示。
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
在图中,浮点数包含符号位、小数位和指数位三部分。例如,小数 3.14159在内存中的符号位为“+”,小数部分为.31415,指数位为1,连接在一起即为“+0.314159 * 101= 3.14159”。在 C语言中,一个小数会被默认为 double类型的值,因此在为一个 float 类型的变量赋值时需要注意一点,所赋值的后面一定要加上字母“F”(或者小写“f”),而为 double类型的变量赋值时,其所赋值后面的字符“D”(或小写“d”),可以省略。具体示例如下:
float f = 123.4f; //为一个 float 类型的变量赋值,后面必须加上字母 f
double d1 = 100.1; //为一个 double 类型的变量赋值,后面可以省略字母 d
double d2 = 199.3d; //为一个 double 类型的变量赋值,后面可以加上字母 d
另外,在程序中也可以为一个浮点数类型变量赋予一个整数数值,示例如下:
float f = 100; //声明一个 float 类型的变量并赋整数值
double d = 100; //声明一个 double 类型的变量并赋整数值
重要知识点:float和 double之间的数据转换
由于浮点型变量是由有限的存储单元组成的,因此只能提供有限的有效数字。在有效位以外的数字将被舍去,这样可能会产生一些误差。例如,将 3.1415926赋给一个 float型变量,但它只能保证前 7 位是有效的。
如下面的案例所示:
#include
int main()
{
float a;
a = 3.141592612;
printf("a=%f ",a);
return 0;
}
运行结果如下图所示:
从图中可以看出,程序运行结果为 3.141593。我们会发现该输出的值与给定的值之间有一些误差。这是由于 a是单精度浮点型变量,它只能提供 7 位有效数字,而 3.141592612已经超出了其取值范围,所以后面的几位被舍去了。
字符型变量
字符型变量用于存储一个单一字符,在 C语言中用 char 表示,其中每个字符变量都会占用 1个字节。在给字符型变量赋值时,需要用一对英文半角格式的单引号(' ')把字符括起来。
例如,'A'的声明方式如下所示:
char ch = 'A'; //为一个 char 类型的变量赋值字符'a'
上述代码中,将字符常量 'A '放到字符变量 ch 中,实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的 ASCII编码放到变量的存储单元中。例如:ASCII使用编号 65来对应大写字母“A”,实际上变量 ch存储的是整数 65,而不是字母“A”本身。
接下来通过一个案例来说明:
#include
int main()
{
char ch1 = 'A';
char ch2 = 65;
printf("%c ",ch1);
printf("%c ",ch2);
return 0;
}
行结果如图所示:
上例中,定义了两个 char 类型变量,分别赋值为字符 'A' 和数字 65,然后通过 printf函数把两个变量的内容以字符形式打印到屏幕上。从图中可以看出,两个变量输出的结果是一样的,这说明对于字符型来说,A和 65其实没什么区别。严格来说,字符类型也是整型类型。
需要注意的是,除了可以直接从键盘上输入的字符(如英文字母,标点符号,数字,数学运算符等)以外,还有一些字符是无法用键盘直接输入的,比如,“回车”,此时需要采用一种新的定义方式——转义字符,它以反斜杠开头,随后接特定的字符。
下面列举了一些常见的转义字符:
接下来,我们通过一个具体的案例来演示转义符的用法:
1 #include
2 int main()
3 {
4 char ch1 = 'A';
5 char ch2 = ' ';
6 char ch3 = 'B';
7 char ch4 = '\';
8 printf("%c",ch1);
9 printf("%c",ch2);
10 printf("%c",ch3);
11 printf("%c",ch4);
12 printf(" ");
13 return 0;
14 }
运行结果如下图所示:
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
案例中定义了四个字符型变量,其中 ch2 被赋值为转义字符 ' ' 即换行符序,ch4被赋值为转义字符 '\' 即反斜杠。从第 8 行到第 11 行按照顺序分别将四个变量的值输出到屏幕上,我们会发现,输出字符 A之后则会另起一行输出字符 B,转义字符 ' ' 的作用就是控制输出结果另起一行。字符 B后输出的是字符 ' ' 。第12 行为了使输出结果的格式清晰一些又输出了一个换行符,防止程序结束后命令行提示符紧跟在输出结果的后面。
这些是C/C++能做的
服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等
求关注,求转发,求支持!
网友评论