C语言基础
2017-11-17 18:20
134 查看
1. 什么是计算机程序?什么是编程语言?为什么需要编程语言?编程语言是用来干嘛的?举例一些编程语言,以及他们各自的特点?
解:计算机程序是指一组指示计算机执行动作或做出判断的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。
编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
原因:为了复杂的事情简单做,方便程序员编写程序。
用途:汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作。例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
举例:
1) 易语言:
易语言是一门计算机程序语言。以“易”著称,以中文作为程序代码表达的语言形式。易语言的创始人是吴涛。早期版本的名字为E语言。易语言最早的版本的发布可追溯至2000年9月11日。可以说,创造易语言的初衷是进行用中文来编写程序的实践。从2000年至今,易语言已经发展到一定的规模:功能上、用户数量上都十分可观。
特点:
a.以简体中文作为程序代码进行编程操作。
b.全中文支持,无需跨越英语门槛。
c.全可视化编程,支持所见即所得程序界面设计和程序流程编码。
d.中文语句快速录入。提供多种内嵌专用输入法,彻底解决中文语句输入速度慢的问题。
e.代码即文档。自动规范强制代码格式转换,任何人编写的任何程序源代码格式均统一。
f.加入了png支持,所涉及到组件: 标签, 按钮, 选择框, 图片框, 图形按钮, 画板, 窗体,表格。
2)SQL:
结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。
特点:
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxpro,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
2. 编辑好的程序到成为可以运行的可执行文件,要经历哪几个过程?
解:从源码到可执行文件,需经过以下几个过程:
预编译、编译、汇编、链接。
3.现阶段为什么要学习C语言,而不是其他的编程语言?C语言有什么特点?
解:原因:
1) 相比较其他的编程语言(像c++,java),c语言是个低级语言。总体上来说,低级的编程语言会让人更好地了解计算机。
2) 设备驱动程序和操作系统只能用C语言来编写。
3) C的程序比其他用别的语言写的程序,实现相同的功能,它用的代码行数更少,而它带来的运行效率更快。
4) 所有的高级语言都是以C语言为基础的。
5) C语言存在时间很长,它有广泛的使用团体并且有大量的现成代码可以使用。
6) C语言是一个开源组织的语言。
7) C语言是唯一一个阐述指针本质的语言。
8) 找编程开发方面的工作时,C语言仍然是最普遍需要的问题。
9) 任何里面有微处理器的设备都支持C语言。
特点:
1) 简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。
C 语言可以象汇编语言一样对位、字节和地址进行操作,
而这三者是计算机最基本的工作单元。
2) 运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3) 数据结构丰富
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
4)C是结构式语言
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
5)C语法限制不太严格、程序设计自由度大
一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。
6)C语言允许直接访问物理地址,可以直接对硬件进行操作
因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。
7)
C语言程序生成代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10へ20%。
8)C语言适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。
9)用法补充:
a.C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
b.C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。
4. 什么是常量,什么是变量?都有哪些分类?
解:
常量:在程序执行过程中,其值不发生改变的量称为常量。
常量分类:
说明:符号常量在使用之前必须先定义,其一般形式为:
#define 标识符常量
其中#define也是一条预处理命令(预处理命令都以"#"开头),称为宏定义命令(在后面预处理程序中将进一步介绍),其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。
习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。
【例3-1】符号常量的使用。
#include<stdio.h>
#define PRICE 30
int main()
{
int num,total;
num=10;
total=num* PRICE;
printf("total=%d",total);
return 0;
}
#include<stdio.h>
#definePRICE 30
intmain(){
int num,total;
num=10;
total=num* PRICE;
printf("total=%d",total);
return 0;
}
几点说明:
用标识符代表一个常量,称为符号常量。
符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。
使用符号常量的好处是:含义清楚;能做到“一改全改”。
变量:
其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。变量定义必须放在变量使用之前。一般放在函数体的开头部分。要区分变量名和变量值是两个不同的概念。
变量定义的一般形式为:
类型说明符 变量名, 变量名, ...;
在书写变量定义时,应注意以下几点:
允许在一个类型说明符后,定义多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。
最后一个变量名之后必须以“;”号结尾。
变量定义必须放在变量使用之前。一般放在函数体的开头部分。
变量定义举例:
int num,total;
double price = 123.123;
char a = 'a', abcint num,total;
float x=3.2,y=3.0,z=0.75;
5. 标识符的命名规范是什么?
解:1)标识符必须以字母a~z、 A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中。
2)标识符区分大小写字母。
3)标识符的长度,c89规定31个字符以内,c99规定63个字符以内 。
4)C语言中的关键字,有特殊意义,不能作为标识符 。
5)自定义标识符最好取具有一定意义的字符串,便于记忆和理解。
6. 什么是数据类型?数据类型分为哪些种类?每种数据类型占多少个字节大小?每种数据类型的取值范围怎么计算?思考:对于数据类型为什么要分类?
解:定义:C语言为我们提供了int,float等基本数据类型,这些都是表示基本数据用的。然而C语言也为我们提供了复杂的数据类型,比如struct,
union等。这些可以由基本数据类型抽象组合而成,可以对应现实世界的任何抽象事物,方便我们编写程序。
种类、所占字节大小及范围:
1)32位平台:
分为有符号型与无符号型。
有符号型:
short 在内存中占两个字节,范围为-2^15~(2^15-1)
int 在内存中占四个字节,范围为-2^31~(2^31-1)
long在内存中占四个字节,范围为-2^31~2^31-1
无符号型:最高位不表示符号位
unsigned short 在内存中占两个字节,范围为0~2^16-1
unsigned int 在内存中占四个字节,范围为0~2^32-1
unsigned long在内存中占四个字节,范围为0~2^32-1
实型变量:
分单精度 float 和双精度 double 两种形式:
float:占四个字节,提供7~8位有效数字。
double: 占八个字节,提供15~16位有效数字。
2)16位平台:
a.整型(基本型):类型说明符为int,在内存中占2个字节。
b.短整型:类型说明符为short int或short。所占字节和取值范围均与整型(基本型)相同。
c.长整型:类型说明符为long int或long,在内存中占4个字节。
无符号型:类型说明符为unsigned。
无符号型又可与上述三种类型匹配而构成:
各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。
实型变量:
分为单精度(float型)、双精度(double型)和长双精度(long double型)三类。
单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。
双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
长双精度型16 个字节(128位)内存空间,可提供18-19位有效数字。
分类原因:据数据类型分配其存储位置、确定其作用范围等等。
7. 字节大小是什么意思?怎么计算数据类型或者变量的字节大小?
解:字节(Byte /bait/ n. [C])是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
2个字节一个汉字,比如“的”;
全角标点2个字节,半角标点一个字节
一个字母一个字节
字符指一个字母或一个字或一个标点或一个符号,不一定几个字节,看情况定。
计算:如计算int字节大小。printf("\n%d\n",sizeof(int));可以打出改系统中int定义变量占多少个字节。一般的是4个。
8. 什么是原码?什么是补码?什么是反码?正数的原码补码反码怎么表示,负数的原码补码反码怎么表示?
解:
1)原码
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位。因为第一位是符号位,所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]
即
[-127 , 127]
原码是人脑最容易理解和计算的表示方式。
2)反码
反码的表示方法是:
正数的反码是其本身
负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值。通常要将其转换成原码再计算。
3)补码
补码的表示方法是:
正数的补码就是其本身
负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。 (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码在计算其数值。
9. 运算符有哪几种?每种运算符进行什么运算?
解:算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
条件运算符:这是一个三目运算符,用于条件求值(?:)。
逗号运算符:用于把若干表达式组合成一个表达式(,)。
指针运算符:用于取内容(*)和取地址(&)二种运算。
求字节数运算符:用于计算数据类型所占的字节数(sizeof)。
特殊运算符:有括号(),下标[],成员(→,.)等几种。
10. C语言中有哪些控制语句,每种控制语句有什么功能?
解:它们由特定的语句定义符组成。C语言有九种控制语句。可分成以下三类:
1)条件判断语句
if语句、switch语句;
2)循环执行语句
do while语句、while语句、for语句;
3) 转向语句
break语句、continue语句、return语句、goto语句(此语句尽量少用,因为这不利于结构化程序设计,滥用它会使程序流程无规律、可读性差)。
11. 搞清楚if...else,for循环,while循环,switch...case怎么执行的?
解:
1)if……else条件语句:
if(条件语句)
{
如果条件成立,执行的代码
}else
{
如果条件不成立,执行的代码
}
if……else if……else语句:
if(判断条件1)
{
执行的代码1
}
else if(判断条件2)
{
执行的代码2
}
……
else if(判断条件n)
{
执行的代码n
}
else
{
执行的代码4
}
2)for循环语句:
for(初始化表达式;循环条件;操作表达式)
{
循环体
}
3) while循环语句:
while(循环条件)
{
循环体
}
do…while循环语句:
do{
执行语句
}while(循环条件);
4)switch…case条件语句 :
switch()
{
case目标值1:
执行语句1
break;
case目标值2:
执行语句2
break;
case目标值n:
执行语句n
break;
default;
执行语句n+1
break;
}
12. break和continue有什么区别?
解:break是结束整个循环,而continue是结束本次循环(跳过下一步)。
解:计算机程序是指一组指示计算机执行动作或做出判断的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。
编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
原因:为了复杂的事情简单做,方便程序员编写程序。
用途:汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作。例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
举例:
1) 易语言:
易语言是一门计算机程序语言。以“易”著称,以中文作为程序代码表达的语言形式。易语言的创始人是吴涛。早期版本的名字为E语言。易语言最早的版本的发布可追溯至2000年9月11日。可以说,创造易语言的初衷是进行用中文来编写程序的实践。从2000年至今,易语言已经发展到一定的规模:功能上、用户数量上都十分可观。
特点:
a.以简体中文作为程序代码进行编程操作。
b.全中文支持,无需跨越英语门槛。
c.全可视化编程,支持所见即所得程序界面设计和程序流程编码。
d.中文语句快速录入。提供多种内嵌专用输入法,彻底解决中文语句输入速度慢的问题。
e.代码即文档。自动规范强制代码格式转换,任何人编写的任何程序源代码格式均统一。
f.加入了png支持,所涉及到组件: 标签, 按钮, 选择框, 图片框, 图形按钮, 画板, 窗体,表格。
2)SQL:
结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。
特点:
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxpro,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
2. 编辑好的程序到成为可以运行的可执行文件,要经历哪几个过程?
解:从源码到可执行文件,需经过以下几个过程:
预编译、编译、汇编、链接。
3.现阶段为什么要学习C语言,而不是其他的编程语言?C语言有什么特点?
解:原因:
1) 相比较其他的编程语言(像c++,java),c语言是个低级语言。总体上来说,低级的编程语言会让人更好地了解计算机。
2) 设备驱动程序和操作系统只能用C语言来编写。
3) C的程序比其他用别的语言写的程序,实现相同的功能,它用的代码行数更少,而它带来的运行效率更快。
4) 所有的高级语言都是以C语言为基础的。
5) C语言存在时间很长,它有广泛的使用团体并且有大量的现成代码可以使用。
6) C语言是一个开源组织的语言。
7) C语言是唯一一个阐述指针本质的语言。
8) 找编程开发方面的工作时,C语言仍然是最普遍需要的问题。
9) 任何里面有微处理器的设备都支持C语言。
特点:
1) 简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。
C 语言可以象汇编语言一样对位、字节和地址进行操作,
而这三者是计算机最基本的工作单元。
2) 运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3) 数据结构丰富
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
4)C是结构式语言
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
5)C语法限制不太严格、程序设计自由度大
一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。
6)C语言允许直接访问物理地址,可以直接对硬件进行操作
因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。
7)
C语言程序生成代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10へ20%。
8)C语言适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。
9)用法补充:
a.C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
b.C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。
4. 什么是常量,什么是变量?都有哪些分类?
解:
常量:在程序执行过程中,其值不发生改变的量称为常量。
常量分类:
常量 | 说明 |
直接常量(字面量) | 可以立即拿来用,无需任何说明的量,例如: 整型常量:12、0、-3; 实型常量:4.6、-1.23; 字符常量:‘a’、‘b’。 |
符号常量 | 用标识符代表一个常量。在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。 |
#define 标识符常量
其中#define也是一条预处理命令(预处理命令都以"#"开头),称为宏定义命令(在后面预处理程序中将进一步介绍),其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。
习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。
【例3-1】符号常量的使用。
#include<stdio.h>
#define PRICE 30
int main()
{
int num,total;
num=10;
total=num* PRICE;
printf("total=%d",total);
return 0;
}
#include<stdio.h>
#definePRICE 30
intmain(){
int num,total;
num=10;
total=num* PRICE;
printf("total=%d",total);
return 0;
}
几点说明:
用标识符代表一个常量,称为符号常量。
符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。
使用符号常量的好处是:含义清楚;能做到“一改全改”。
变量:
其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。变量定义必须放在变量使用之前。一般放在函数体的开头部分。要区分变量名和变量值是两个不同的概念。
变量定义的一般形式为:
类型说明符 变量名, 变量名, ...;
在书写变量定义时,应注意以下几点:
允许在一个类型说明符后,定义多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。
最后一个变量名之后必须以“;”号结尾。
变量定义必须放在变量使用之前。一般放在函数体的开头部分。
变量定义举例:
int num,total;
double price = 123.123;
char a = 'a', abcint num,total;
float x=3.2,y=3.0,z=0.75;
5. 标识符的命名规范是什么?
解:1)标识符必须以字母a~z、 A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中。
2)标识符区分大小写字母。
3)标识符的长度,c89规定31个字符以内,c99规定63个字符以内 。
4)C语言中的关键字,有特殊意义,不能作为标识符 。
5)自定义标识符最好取具有一定意义的字符串,便于记忆和理解。
6. 什么是数据类型?数据类型分为哪些种类?每种数据类型占多少个字节大小?每种数据类型的取值范围怎么计算?思考:对于数据类型为什么要分类?
解:定义:C语言为我们提供了int,float等基本数据类型,这些都是表示基本数据用的。然而C语言也为我们提供了复杂的数据类型,比如struct,
union等。这些可以由基本数据类型抽象组合而成,可以对应现实世界的任何抽象事物,方便我们编写程序。
种类、所占字节大小及范围:
1)32位平台:
分为有符号型与无符号型。
有符号型:
short 在内存中占两个字节,范围为-2^15~(2^15-1)
int 在内存中占四个字节,范围为-2^31~(2^31-1)
long在内存中占四个字节,范围为-2^31~2^31-1
无符号型:最高位不表示符号位
unsigned short 在内存中占两个字节,范围为0~2^16-1
unsigned int 在内存中占四个字节,范围为0~2^32-1
unsigned long在内存中占四个字节,范围为0~2^32-1
实型变量:
分单精度 float 和双精度 double 两种形式:
float:占四个字节,提供7~8位有效数字。
double: 占八个字节,提供15~16位有效数字。
2)16位平台:
a.整型(基本型):类型说明符为int,在内存中占2个字节。
b.短整型:类型说明符为short int或short。所占字节和取值范围均与整型(基本型)相同。
c.长整型:类型说明符为long int或long,在内存中占4个字节。
无符号型:类型说明符为unsigned。
无符号型又可与上述三种类型匹配而构成:
各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。
实型变量:
分为单精度(float型)、双精度(double型)和长双精度(long double型)三类。
单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。
双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
长双精度型16 个字节(128位)内存空间,可提供18-19位有效数字。
分类原因:据数据类型分配其存储位置、确定其作用范围等等。
7. 字节大小是什么意思?怎么计算数据类型或者变量的字节大小?
解:字节(Byte /bait/ n. [C])是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
2个字节一个汉字,比如“的”;
全角标点2个字节,半角标点一个字节
一个字母一个字节
字符指一个字母或一个字或一个标点或一个符号,不一定几个字节,看情况定。
计算:如计算int字节大小。printf("\n%d\n",sizeof(int));可以打出改系统中int定义变量占多少个字节。一般的是4个。
8. 什么是原码?什么是补码?什么是反码?正数的原码补码反码怎么表示,负数的原码补码反码怎么表示?
解:
1)原码
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位。因为第一位是符号位,所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]
即
[-127 , 127]
原码是人脑最容易理解和计算的表示方式。
2)反码
反码的表示方法是:
正数的反码是其本身
负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值。通常要将其转换成原码再计算。
3)补码
补码的表示方法是:
正数的补码就是其本身
负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。 (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码在计算其数值。
9. 运算符有哪几种?每种运算符进行什么运算?
解:算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
条件运算符:这是一个三目运算符,用于条件求值(?:)。
逗号运算符:用于把若干表达式组合成一个表达式(,)。
指针运算符:用于取内容(*)和取地址(&)二种运算。
求字节数运算符:用于计算数据类型所占的字节数(sizeof)。
特殊运算符:有括号(),下标[],成员(→,.)等几种。
10. C语言中有哪些控制语句,每种控制语句有什么功能?
解:它们由特定的语句定义符组成。C语言有九种控制语句。可分成以下三类:
1)条件判断语句
if语句、switch语句;
2)循环执行语句
do while语句、while语句、for语句;
3) 转向语句
break语句、continue语句、return语句、goto语句(此语句尽量少用,因为这不利于结构化程序设计,滥用它会使程序流程无规律、可读性差)。
11. 搞清楚if...else,for循环,while循环,switch...case怎么执行的?
解:
1)if……else条件语句:
if(条件语句)
{
如果条件成立,执行的代码
}else
{
如果条件不成立,执行的代码
}
if……else if……else语句:
if(判断条件1)
{
执行的代码1
}
else if(判断条件2)
{
执行的代码2
}
……
else if(判断条件n)
{
执行的代码n
}
else
{
执行的代码4
}
2)for循环语句:
for(初始化表达式;循环条件;操作表达式)
{
循环体
}
3) while循环语句:
while(循环条件)
{
循环体
}
do…while循环语句:
do{
执行语句
}while(循环条件);
4)switch…case条件语句 :
switch()
{
case目标值1:
执行语句1
break;
case目标值2:
执行语句2
break;
case目标值n:
执行语句n
break;
default;
执行语句n+1
break;
}
12. break和continue有什么区别?
解:break是结束整个循环,而continue是结束本次循环(跳过下一步)。