基本数据类型

2023-02-28 13:50:35 浏览数 (1)

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个
代码语言:javascript复制
#include <stdio.h>

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

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

    return 0;
}

函数命名

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

例如:

代码语言:javascript复制

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

注释

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

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

3. 数值类型

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

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

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

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

关键字

类型

char

字符

short

短整型

int

整型

long

长整型

long long

长长整型

unsigned char

无符号字符

unsigned short

无符号短整型

unsigned int

无符号整型

unsigned long

无符号长整型

unsigned long long

无符号长长整型

float

单精度浮点型

double

双精度浮点型

  • 不同的数值变量类型所占内存大小不同,依不同的计算机平台而有差异。下面我们看一下在64位的ubuntu上数值变量类型的大小。
代码语言:javascript复制
#include <stdio.h>

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

    printf("sizeof(char) = %lun", sizeof(char));
    printf("sizeof(short) = %lun", sizeof(short));
    printf("sizeof(int) = %lun", sizeof(int));
    printf("sizeof(long) = %lun", sizeof(long));
    printf("sizeof(long long) = %lun", sizeof(long long));
    
    printf("sizeof(unsigned char) = %lun", sizeof(unsigned char));
    printf("sizeof(unsigned short) = %lun", sizeof(unsigned short));
    printf("sizeof(unsigned int) = %lun", sizeof(unsigned int));
    printf("sizeof(unsigned long) = %lun", sizeof(unsigned long));
    printf("sizeof(unsigned long long) = %lun", sizeof(unsigned long long));

    printf("sizeof(float) = %lun", sizeof(float));
    printf("sizeof(double) = %lun", sizeof(double));

    return 0;
}

变量声明

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

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

例如:

代码语言:javascript复制
    int iVar1,iVar2;
    int iVar2;
    int iVar4;
    float fVar5;
    double dVar6;

变量初始化

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

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

4. 常量

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

字面常量

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

符号常量

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

代码语言:javascript复制

#include <stdio.h>

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

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

    return 0;
}

5. 变量的存储类型

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

静态存储和动态存储

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

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

/* 文件1 */
#include <stdio.h>

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

/* 文件2 */

#include <stdio.h>

int a = 100;

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

总结

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

0 人点赞