第0章 C语言基本语法3 联系客服

发布时间 : 星期日 文章第0章 C语言基本语法3更新完毕开始阅读9dee2b8a02d276a200292eed

第0章 C语言基本语法

一共80学时,分两部分:C、数据结构。其中C大概32学时,数据结构48学时。

0.1 C编译环境

C语言一般可使用两种编程环境:

1、Turbo C 2.0版本,重要的三个热键: 1)编译:F9

2)运行:Ctrl+F5 3)观察结果:Alt+F5

2、Visual C++ 6.0版本:只适合在Windows操作系统下,是微软开发出来的,在这个环境下进行C、C++、Visual C++进行编程非常方便。

在VC++6.0看来,每个程序都应该以“Project”(工程、项目)的形式来进行。而每个Project又应该包含在一个WorkSpace(工作区) 之中。当然,一个Workspace中可以有多个Project。因此,我们每创建一个程序,都应该首先创建一个工程,这个工程就是一个整体,经过编译连接等操作,这个工程最终就能够变成一个在Windows下可执行的程序。

在VC6.0中的Project有以下几种常用类型:

1)Win32 Console Application:Win32控制台应用程序,适合所有的C程序,由它创建出来的应用程序一般没有独立的窗口。这种程序的入口函数为main函数。

2)Win32 Application:Win32应用程序,适合C/C++程序,这个与上面的区别在于,可以创建出有独立窗口的应用程序,特别地,它可以使用Win API函数库。入口函数不是main函数,而是tmain或WinMain等。

3)MFC AppWizard(.exe):适合使用Visual C++语言进行编程,可以方便地创建出普通的Windows窗口,能够方便地进行窗口编程。在这种程序中,连main或WinMain函数都找不到。

0.2 熟悉Visual C++ 6.0编程环境

每一个程序都以“工程(Project)”的形式出现,在VC中,又将一个或多个工程包装成一个“工作区(WorkSpace)”,所以,我们在每个程序编程时都需要创建一个工程,再在这个工程中创建文件(.cpp、.h文件等)。

编译微型条

0.3 顺序程序设计 0.3.1 数据类型

1、基本类型(整型、浮点型、字符型),枚举类型、复合类型(数组、指针、结构体、共用体)。

2、整型:int、short int、long int,都是使用补码的形式来表示。 如要将-123表示成16位(2B)的补码

1)先将123化为原码二进制形式:0000 0000 0111 1011

2)最高位取1,其它位按位取反:1111 1111 1000 0100,得到的是反码。 3)末尾加1:1111 1111 1000 0101

显然,16位所能表示的数据,最大的那个是:0111 1111 1111 1111=215-1,最小的那个数:1000 0000 0000 0000=-215,而1111 1111 1111 1111=-1 int short int long int char Turbo C 2B,-215~215-1 2B,-215~215-1 4B, -231~231-1 1B,-128~127 Visual C++ 4B, -231~231-1 2B,-215~215-1 4B, -231~231-1 ASCII:1B Unicode:2B unsigned:无符号,也就是没有负数,全部是正数。如unsigned int 所以,如果对于int来说,1111 1111 1111 1111=-1,而对于unsigned int来说,1111 1111 1111 1111=216-1

另外还有一个关键字:signed,代表有符号,如signed int实际上就是int。 long int可以简写为long,而short int可简写为short 3、浮点数:float、double,

float称为单精度浮点数,由4B表示,它只有6个有效数字。能表示的数据范围:0及1.2X10-38~3.4X1038

double称为双精度浮点数,由8B表示,它有15个有效数字。能表示:0

-308308

及2.3 X10~3.4X10

long double长双精度浮点数,一般不太使用,它一般可以有有16B。 注意一个细节:不准确,可能有些数明明是有限小数,但在计算机中无法表示,将表示成无限的近似的数,如0.1,所以,我们有两点要注意的:

1)不要用浮点数来控制循环次数。 float f;

for( f=0; f<1;f+=0.1) { ?? }

2)不要直接比较两个浮点数是否相等。如: double a=0.1, b=0.11 if( a==b)

真正要做的比较应该为: if( fabs( a-b )<= 1e-7 ) 4、字符:char,包括:(可参照ASCII码表进行) 1)字母:大写、小写 2)数字:0~9

3)专门符号:29个,!@#$ 4)空格符:空格、水平制表符

5)不能显示出来的字符:null,可以以'\\八进制代码'表示出来,如回车换行符'\\007',还可以以'\\代号'表示,如'\\n'

\\n:回车换行 \\f:换页 \\b:退一格

\\r:回车,不换行,就是回到这一行的最前面开始 \\0:空字符, \\\\:反斜杠本身

字符必须包含在一对单引号中,如:'a','\\035','\\n'等

5、字符串:包含在一对双引号中的任意个(1个或多个)字符,但是一个字符串中至少有一个字符\\0,如:

\、

char str[ ]=\,

可以使用strlen( str )来求字符串str中有多少个字符,此处得到6.

可以使用sizeof( str )来求字符串 str占了多少个字节的空间,此处得到7. 注意:

1)双引号本身应该在英文状态下

2)字符串中可以有中文,一个中文点两个字节

0.3.2运算符

+ - * / %

除:规定如果参加运算的两个数都是整数的话,则结果也是整数;而如果只有有任意一个数据为float或double,则结果为double,如: double c;

int a=-10, b=4;

//方法一:强制转换某个数为double或float c=(double)a/b; //c=2.5 c=a/(double)b;

printf(\

//方法二:将数字前面乘以1.0,从而该数变为double c=1.0*a/b; //c=2.5;

printf(\陷阱:

int a=-10, b=4; float c=2.5, d=5.2; double e; e=c*d+a/b;

取余%:规定参加运算的两个数必须是整型(包括int、short、long、char),不得为浮点数,其结果为被除数除以除数所得到的余数,其符号与被除数相同。如:

int a=-20, b=3;

int c=a%b; //c=-2 int d=a/b; //d=-6 如果

int a=20, b=-3;

int c=a%b; //c=2 int d=a/b; //d=-6

0.3.3赋值

在C中,赋值运算符包括:=、+=、-=、*=、/=、%=及后面的位运算的&=、|=、^=等。

注意问题:

1、复合赋值:+=、-=、*=、/=、%=,如: int b=5; b+=7; //相当于b=b+7;

其计算顺序为从右向左计算,如: int a=10;

a+=a-=a*=a/=2; //结果a=0

可以分解为:a/=2; a*=a; a-=a; a+=a; 2、括号的问题: int a=10, b, c; a+=(b=3*4); //b=12, a=22

3、逗号表达式的问题,规定,取最后一个数的值,如: int a=10, b;

a+=(b=3*4, c=(5, 10, 15)); //b=12, c=15, a=25 4、混合运算类型的转换问题:

1)有些转换是自动完成的,其一般原则为:char->int->long->double如: double f; int a, b; float t; char c; f=(t= a+c );

2)如果不满意,可以强制类型转换 a=(int)( f + t);