三天学会C语言编程|中篇

本文是《三天学会C语言编程》的第二篇文章,承接上一篇《三天学会C语言编程|上篇》。本文重点介绍C语言的数据类型、表达式、变量和函数等内容。

数据类型

C语言中有多种数据类型,这些数据的类型与我们日常生活中的数据的类型有些类似。比如整型数和浮点型数(小数),还有一些我们平时接触不到的数据类型,如字符串类型(上文中的hello world!就是一个字符串类型的数据)。如下表是C语言支持的数据类型(部分),这里先不用过多理解,只需要知道有这些类型就行,后面会详细介绍。通过这个表可以看出不同类型的数据占用的内存空间大小是不同的

三天学会C语言编程|中篇

图1 C语言数据类型列表

变量

变量其实是内存的一个区域,用于存储具体的数据,需要说明的是变量是有名称的。变量的名称就好像邮箱的编号一样,这样我们在编程的时候就可以通过这个名字方便的访问(读或者写)变量。

在C语言中变量的名称可以是英文字符、下划线和数字,但只能以英文字符和下划线开头,不能以数字开头。另外,C语言中变量名称是区分大小写的,也就是var_name和var_Name是两个不同的变量。

我们知道在C语言中数据是有不同的类型的,同样变量也有不同的类型。不同类型的变量用于存储不同类型的数据,而且不同类型变量占用的空间大小是不同的。那么如何定义一个变量呢?很简单,其基本格式就是类型+变量名称,如下定义了一个整形的变量:

int var_name;

其它类型的变量与此类似,只是变量的类型不同。至于名称则遵循上文所描述的规范。

表达式

我们知道程序最主要的功能就是进行计算的,因此在程序中会有一些表达式进行计算。表达的形式与日常数学中的表达式基本一致,运算的优先级也类似。如下是一个简单的表达式:

3 + 5 * 6

这个表达式进行简单的数据计算,但该表达式在实际编程时并不没有太大意义,因为计算出的值将被直接丢弃。通常我们需要将表达式计算的值放到一个变量这,这样我们后面才能使用该表达式计算的结果。下面是一个具体的示例:

#include <stdio.h>
int main(void)
{
 int a; //声明整型变量
 long b; // 声明长整型变量
 short c; // 声明短整型变量
 char d; // 声明字符类型的变量
 float e = 1.2; //声明浮点型(小数)变量,在声明的时候可以直接初始化
 int f = 0;
 unsigined int = 3; // 声明无符号整型变量,无符号整形只能是非负整数
 b = 10; //给变量赋值,赋值就是改变变量的内容,让其等于某个值
 c = 11; // 注意赋值的方向,变量在等号左边(又称“左值”),数据在等号右面
 a = a + 10; // 进行基本的加法运算
 c = a + b; /* 可以进行不同类型的变量之间的运算,但可能会丢失数据。因为每种类型变量存储的数值大小是有限的,超过就会溢出。本例中变量c是短整型,范围是-32,768 到 32,767。而变量b是长整形,范围是从-2,147,483,648 到 2,147,483,647。因此,如果计算结果超过了c的范围,将会出现溢出,因此在计算是需要注意。*/
 e = a + b * c; // 这里的*是星号,也就是键盘8上面的字符,代表乘法
 a = (a + e) * c; //可以使用括弧提升运算的优先级,本例中
 a = a /c ; //除法运算
 a = a % c; //取模运算
 a --; //自减运算,也就是自己减1
 a ++; //自加运算
 
 /*除了进行基本的算术运算外,还可以进行位运算。所谓位运算就是逐位运算。*/
 
 a = a & b; //按位“与”运算
 a = a | b; //或
 a = a ^ b; //异或
 a = ~a; //非
 /*关系运算,也就是判断两个或者多个变量的关系。*/
 a == b; //判断两者是否相等,相等返回真,否则返回假
 a >= b; 
 a > b;
 a <=b; 
 a != b; //判断两者是否相等,相等返回假,否则返回真
 
 a && b; //注意是2个&,两者都为真是结果为真。可以多余2个进行运算
 a || b; 
}

函数

我们在最一开始的时候已经使用了函数,但还没有对函数进行任何介绍。下面本文将介绍一下什么是函数,为什么要有函数以及函数怎么使用。

函数是对实现某个功能的代码的封装。有了函数之后,具体的功能我们调用该函数就可以完成,而不同将代码黏贴过来,增加了便利性。

#include <stdio.h>
/*下面是函数的定义*/
int add(int a, int b) /*这一行成为函数头,其中int是函数的返回值类型,add是函数名称,int a和int b是函数的参数(形参)。
这里返回值和参数可以是任何类型。*/
{ /*函数头后面要紧跟着{,可以与函数头在同一行,或者另起一行,这个代表函数体的开始*/
 int c = 0;
 c = a + b; //这里是函数的具体实现,根其它地方没有任何差异
 return c; //函数的返回值,类型要与在函数头中定义的一直,否则有截断的风险
}/*函数体的结束*/
int main(void)
{
 int a = 0;
 
 a = add(1, 2); /*函数的调用,这里相当于使用add函数的功能,进行加法运算。*/
 printf("result: %d
", a);
}

函数可以与入口函数在相同的文件中,也可以在一个单独的文件中。函数的定义通常在.c文件中,而在头文件(.h文件)中添加声明。这样我们只需要包含头文件就可以使用该函数了。

好了今天先到这,到这里基本上可以写简单的C语言程序了,并封装成功能函数。明天写最后一篇主要介绍流程控制、复杂的数据类型和系统库等内容。

相关推荐