第一节 C语言快速入门
Main函数
C程序都是由函数定义和数据对象定义组成,下面是函数定义的基本格式:
<返回值类型> <函数名> ( [参数说明] )
{
<函数定义>
}
所有的函数都必须有一个返回值类型说明,返回值类型为空时就写void,其他的返回值类型还有整型(int)、浮点型(float)等。参数说明可以为整型(int)、浮点型(float)等,为空时就写void。
例:一个只定义了main()函数的简单JC程序。
int main(void)
{
cls();
printf("HELLO");
}
数据对象
在C程序设计中变量和常量是基本的数据对象。在C程序的数据定义部分,需列出要使用的变量,并声明其类型,必要时还需设置初始值。
1、变量
在C语言中,可以在函数外(在任何一对花括号之外)或函数体内定义变量。通常,变量以如下形式定义:
<类型> <变量名>;
例:int a; 定义了一个整型变量a。
或:
<类型> <变量名>=<初始值>;
例:float P=2.0; 定义了一个浮点型变量P,并初始化为2.0。
变量名必须由英文字母或下划线开始,区分大小写 。C语言的关键字,如if,while等不能用于变量名。此外,变量名和函数名不能相同。
变量在定义时若不给出初始值,变量初始值则为零。
2、常量
常量是指程序运行过程,其值不能被改变的量。常量在使用时,根据不同的需要使用不同的类型:
a、整型常量
整型常量可定义为十进制形式(如,255或-1)。可定义为使用"0x"前缀的十六进制形式(如,0x1fff),还可定义为一种非标准但常用的,使用"0b"前缀的二进制形式(如,0b2002001),但不支持使用零前缀的八进制常量。
b、长整型常量
通过在十进制整数后加上后缀" L "或" l "(字母L的大小写)可创建长整型常量。例如,0L是长整型的零。虽然"L"的大小写均可使用,但大写形式更具有可读性。
c、浮点数型常量
浮点数可使用科学计数法 (例, " 10e3" 或"10E3") 或用小数点分段。例如,浮点数零可以"0.","0.0"或"0E1"的形式给出,而不能仅仅用"0"。由于能力风暴智能机器人无浮点运算硬件,浮点运算将比整型运算慢,要节省地使用浮点运算。
d、字符型与字符串型常量
单引号括起的字符型常量的值是其ASCII码值 (例: 'x',它的值是120)。字符串型常量用成对的双引号定义,如,"This is a robot."。
e、NULL
NULL是一个特殊常量,NULL具有零值,可对指针或数组变量赋值,或进行比较(将在后面说明)。通常,其它常量是不能转成指针类型,所以很多情况下要用到NULL。
3、数据类型
a、16位整型
16位整型由int类型标识符表示。其取值范围从-32,768到+32,767(十进制数)。
b、32位整型
32位整型由long类型标识符表示。其取值范围从-2,147,483,648到+2,147,483,647(十进制数)。
c、32位浮点型
32位浮点型由float类型标识符表示。约有七位有效数字,其范围从10^-38到10^38。
d、8位字符型
8位字符型是由char类型标识符表示,字符的取值一般是标准ASCII字符集中的可打印字符,但不是绝对的。字符型变量可表示任意的8位整数。
e、指针
C代码中的指针是表示内存地址的十六位整数。处理内存中变量值的方式有计算、传递以及通过指针引用其在内存中的地址。
f、数组
数组用于储存同类型的数据序列(即所有的数组元素有相同的数据类型)。定义数组时需指定其长度(即数组元素的个数)。数组中的元素可像其它变量一样进行设置和存取。
语句与表达式
语句是组成C程序基本成分之一,包括表达式、赋值、函数调用或控制语句。表达式组合变量及常量产生新值。运算符施加于特定类型对象之上,指明了将如何对它进行处理。
1、运算符
每种数据类型都有自己的运算符集以决定可以对其采用的运算。
a、整型运算
整型数支持以下运算:
算术运算 加法+,减法-,乘法*,除法/
比较运算 大于>,小于<,等于==,大于等于>=,小于等于<=,不等于!=
位运算 按位或 |,按位与 &,按位异或 ^,按位取反 ~
布尔运算 逻辑或 | |,逻辑与&&,逻辑非 !
C语句在使用布尔值时,总是把整数零作为假(false),任何非零值作为真(true)。布尔运算符
返回零作为假,而返回1作为真。
布尔运算符 && 和 | |一旦得到最终表达式的结果,就会终止整个表达式的计算。例如,在表达式 a&&b 中,若a是假,则结果必为假而无需计算b,因而该 && 运算符不会对b求值。
b、长整型
整型运算所支持的运算符集中部分可用于长整型:算术加+,算术减-,算术乘*,及整型比较运算符。长整型不支持位运算,布尔运算及算术除法。
c、浮点数
浮点数运算包括算术运算,三角运算及对数运算。由于浮点运算由软件实现,它们比整型运算慢了许多。若从性能考虑,建议少用浮点运算。浮点运算支持如下类型:
算术运算 加法+,减法-,乘法*,除法/
比较运算 大于>,小于<,等于==,大于等于>=,小于等于<=,不等于!=
数学函数 JC支持的三角运算,对数运算和指数运算。详情见浮点运算函数部分。
2、赋值运算与表达式
最基本的赋值运算符是“=”。下面的语句将a的值加2。
a = a + 2;
简写形式 a + = 2; 可执行同样的操作。
同样的用法的运算符有:
+ - * / % << >> & ^ |
a、自增运算符与自减运算符
自增算符"++"对变量进行增量操作。例如,语句"a++"等于"a=a+1"或"a+=1"。
使用自增运算符的语句是有值的。例如,语句
a=3;
printf("a=%d ++a=%d", a, ++a);
会显示"a=3 ++a=4."。由此可知,++a是先执行"a=a+1"的操作,再将它的值打印出来。
若自增运算符放在变量名后,则先计算表达式的值,再进行自增操作。则如下语句
a = 3;
printf("a=%d a++=%d", a, a++);
会显示 "a=3 a++=3" 但此语句执行后a的值已是4。
自减运算符"--"的使用类似于自增运算符。
b、数据存取运算符
“&”:单个的 & 符号用于对变量和数组的引用,返回其在内存中的地址。该运算符不能用于在内存中没有固定地址的表达式。
“*”:表达式中的单个 * 符号用于返回指针所指变量的值。这种操作称为“间接引用”。
3、运算优先级和次序
下面简要地给出C运算符的优先级与结合原则。越排在前面的运算符其优先级越高。同行的运算符优先级相同,运算次序由结合方向决定。
运算符 | 结合方向 |
() [] | 自左向右 |
! ~ ++ -- - ( 类型 ) | 自右向左 |
* / % | 自左向右 |
+ - | 自左向右 |
<< >> | 自左向右 |
< <= > >= | 自左向右 |
== != | 自左向右 |
& | 自左向右 |
^ | 自左向右 |
| | 自左向右 |
&& | 自左向右 |
|| | 自右向左 |
= += -= *= /= %= >>= <<= &= ^= |= | 自右向左 |
, | 自左向右 |
例如:a = b + a * 3 / 4 – c;
运算次序是:先计算 a * 3 / 4,再计算b + ,之后计算 – c,最后是把计算结果赋值给a。
控制语句
1、控制语句
单个的C语句以分号结束。一组语句可用花括号组合成复合语句块。语句块内可定义局部变量。
2、If…或If…else…
if…语句用于判断是否执行某些语句,其语法为:
if (表达式)
{ 语句;}
if…else… 语句用于选择,其语法为:
if (表达式)
{ 语句1;}
else
{ 语句2;}
该语句执行时,先计算if后面的表达式,若表达式的值不等于零(如逻辑真),则执行语句1;若表达式的值等于零,则执行语句2。
3、While
while语句用于循环,其语法为:
while (表达式)
{ 语句;}
while 开始就先计算表达式的值,若为假(零),则跳过语句;若为真(非零),则执行语
句。然后再次计算表达式的值,执行同样的检查,直到表达式值为零,终止循环。
在C中用while很容易创建永远循环,如:
while (1)
{ 语句;}
这是因为表达式的值为1,永真的缘故。
4、For
for语句用于循环,其语法为:
for (表达式1;表达式2;;表达式3)
{ 语句}
它等同于如下的while循环:
表达式1;
while (表达式2) {
语句;
表达式3;
}
典型地,表达式1为赋值操作,表达式2为相关的表达式,表达式while语句怎么用自然语言3为某种方式的自增或自减操作。例如,如下代码从0计数到99,并同时输出各数字:
int i;
for (i= 0; i < 99; i++)
{
cls();
printf("%d", i);
wait(0.1);
}
5、Break/continue/return
break用于在while或for循环中提前终止循环或跳出死循环。
Continue用于在while或for循环中跳过此代码之后的语句,继续执行下一次循环。
Return用于直接退出主程序或子函数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论