C语言中的基本数据类型

嵌入式技术

1330人已加入

描述

C语言是非常重要的一门程序设计语言,学好C语言再去学习其他编程语言将变得很轻松,因为大部分语言的都有相同的共性存在。 本节我们来讲解一下C语言中的基本数据类型,掌握如何使用变量以及变量在编程中的作用及重要性,学会区分变量的存储类型,学会如何声明并初始化变量,了解字符和数值之间的不同。

1. 内存

在学习变量之前,我们先来了解一下计算机内存的一些基本知识,了解计算机内存能很好地帮助理解C编程

  • RAM随机存储器,通常位于计算机内部,具有易失特性,RAM只能在计算机运行时保存信息,计算机掉电后丢失。
  • 每台计算机都需要一定容量的RAM硬件支持。 在计算机系统中,用字节(Byte)表示RAM的大小
  • 1GB=1024MB,1MB=1024KB,1KB=1024B
  • 字节是计算机数据存储的基本单位,在计算机中RAM是按顺序逐字节排列的,每个字节都有唯一的地址(即我们常说的内存地址)。 地址按顺序付给内存地址,一直增长到内存的最大值。
  • 了解了内存地址有助于C编程中理解变量的存储及所占用的内存空间大小。 在编程中出现问题时方便我们知道如何去查找问题,而不是一头雾水。

2. C代码规范

说到变量就不得不说变量的命名,说到变量命名就不得不说编程中代码的规范问题。 虽然在C编程中变量命名是有一定自由的,但是为了我们编写的代码具有可读性、友好性、可维护性,在开始进行编程时,就要养成良好的编程习惯,按照程序的规范去编写代码。 具有良好的编码规范和习惯能很好的减少编程中出现不必要的错误。 下面我们说一下基本的编码规范。

变量命名

在C编程中使用变量,我们首先就是要知道如何创建和命名变量。 C语言中的变量必须遵循以下规则

  • 变量名由字母(a-z,A-Z)、数字(0-9)、下划线组成(_)
  • 变量名的第一个字符必须为字母和下划线
  • C语言区分大小写,Test和test是两个不同的变量
  • C语言中的关键不能用作变量,因为关键字是C语言的一部分
  • 一般C编译器不允许变量的命名字符无限长,一般不超过31个
#include 

int main(int argc, char const *argv[])
{
    /* 变量定义 */
    int iTest;     // 合法
    int itest;     // 合法
    int iTest1;    // 合法
    int iTest_1;   // 合法

    int _iTest;    // 合法
    int 1iTest;    // 非法

    return 0;
}

函数命名

定义函数时一般用单词表示函数的作用,并且每个单词首字母大写。 这是作者习惯性用法,不是必须的。

例如:

int TestAddTwoNumber(int iA, int iB)
    {
        return (iA + iB);
    }

注释

程序中代码的注释是为了做说明,方便理解代码的功能。 良好的代码注释能给人更好的阅读感,并且方便其他人进行代码的维护。 C编程中代码的注释有//和/**/两种

  • // 木荣君本人习惯做单行注释
  • /**/ 木荣君本人习惯做多行注释

3. 数值类型

C语言中有多种不同的数值变量,不同类型的数值变量需要不同的内存空间,而且占用的内存空间也不尽相同。 选用合适的变量类型,可以使程序的运行效率提高。

C语言中的数值变量基本上分两大类:

  • 整型变量,存储没有小数部分的数值,分为有符号和无符号变量。 有符号变量可以存储正负值,无符号变量只能存储正值和零。
  • 浮点型变量:存储带有小数部分的值

下面看一下C语言的数值数据类型

计算机

  • 不同的数值变量类型所占内存大小不同,依不同的计算机平台而有差异。 下面我们看一下在64位的ubuntu上数值变量类型的大小。
#include 

int main(int argc, char const *argv[])
{

    printf("sizeof(char) = %lu\\n", sizeof(char));
    printf("sizeof(short) = %lu\\n", sizeof(short));
    printf("sizeof(int) = %lu\\n", sizeof(int));
    printf("sizeof(long) = %lu\\n", sizeof(long));
    printf("sizeof(long long) = %lu\\n", sizeof(long long));
    
    printf("sizeof(unsigned char) = %lu\\n", sizeof(unsigned char));
    printf("sizeof(unsigned short) = %lu\\n", sizeof(unsigned short));
    printf("sizeof(unsigned int) = %lu\\n", sizeof(unsigned int));
    printf("sizeof(unsigned long) = %lu\\n", sizeof(unsigned long));
    printf("sizeof(unsigned long long) = %lu\\n", sizeof(unsigned long long));

    printf("sizeof(float) = %lu\\n", sizeof(float));
    printf("sizeof(double) = %lu\\n", sizeof(double));

    return 0;
}

计算机

变量声明

在C程序中,要想使用变量,前提是必须先声明。 变量声明就是告诉编译器变量的类型和名称,建议在声明变量时进行指定初始值。 这样做是有好处的,因为变量不指定初始值,会默认赋值随机值。

变量的声明格式如下:typename varnametypename:指定变量的类型 varname:指定变量名

例如:

int iVar1,iVar2;
    int iVar2;
    int iVar4;
    float fVar5;
    double dVar6;

变量初始化

上面提到了声明变量时如果不进行指定初始值,系统会随机赋一个随机值。 所以在声明变量时进行赋值初始值。

int iVar1 = 0, iVar2 = 1;
    int iVar2 = 1;
    int iVar4 = -1;
    float fVar5 = 0.1;
    double dVar6 = 1.2;
  • 注意,赋值变量初始值时不能超过变量的表示范围。 如果超过范围编译可以通过,但是程序运行时可能发生意想不到的问题。

4. 常量

常量与变量类似,但是与变量不同的是存储在常量中的值在程序运行中是不可改变的。 C语言中有两种类型的常量字面常量和符号常量。

字面常量

int cnt = 20;
    float rate = 0.51
  • 20和0.51都是字面常量,上面的声明是将这两个字面常量分别存储在cnt和rate中。 其中,20不带小数点的字面常量是整型常量,0.51是带小数点的字面常量是浮点型常量。 C编译器将没有小数点的常量认为整型常量,带有小数点的常量为浮点型常量。

符号常量

程序中,用常量名来表示符号常量。 与字面常量一样,程序运行时也不能改变符号常量。 符号常量的好处是为编码和阅读带来便利性。

#include 

#define PI 3.14  // 定义符号常量

int main()
{
    double dRes = 2.PI;
    printf("%lf\\n", dRes);

    return 0;
}

5. 变量的存储类型

C编程中可以选择变量的不同存储形式,分为静态存储和动态存储。 可以通过存储类型修饰符来告诉编译器是什么类型的变量。

静态存储和动态存储

静态存储是指程序运行分配的固定存储方式,而动态存储则是在程序运行期间动态分配存储空间。

  • auto变量 修饰一个局部变量为自动的,就是每次执行到该变量时,就会产生一个新的变量。 如果不加auto关键,默认也是自动变量。
  • static变量 修饰为静态变量,static变量在语句执行期间始终保持它的值,并且初始化只在第一次执行时起作用,在随后的执行中保持上一次执行时的值。
  • register变量 称为寄存器变量。 把某个局部变量存放在计算机的硬件寄存器而不是内存中,这样可以提高程序的运行效率。 实际编程中用处不大。
  • extern变量 为外部存储变量,extern声明程序中用到的在其他地方定义的变量。
/* 文件1 */
#include 

int main()
{
    extern int a;
    printf("a = %d\\n", a);
    return 0;
}

/* 文件2 */

#include 

int a = 100;

那么上述结果打印输出a = 100;

总结

本节阐述了有关变量和常量的基本内容,以及如何在程序中使用变量。 最后介绍了变量的存储类型,掌握这些基本的知识是C编程所应该具备的能力。 希望通过本节对你有所帮助。 最重要的是我们要学会从编写代码中去理解这些知识,不要纸上谈兵,要学会操练起来。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分