当前位置: 首页 > news >正文

C语言导航 2.2数据类型

第二节 数据类型

  • 数据类型介绍

  • 基本数据类型详解

2.2.1 数据类型

说明:数据是计算机程序操作的对象和结果,其类型决定了数据占用内存空间大小、存放格式、取值范围运算规则等。

内容:

(1)基本数据类型:是构成C语言数据类型的最基本要素,其值不可以分解为其他类型。

(2)枚举类型:用于声明一组命名的常数,其值不可以分解为其他类型。

(3)构造数据类型:指可以通过其他的数据类型进行构造,可由程序员自定义 。

(4)空类型:用于显示说明一个函数不返回任何值。

(5)指针类型:用于存储地址的一种数据类型。

2.2.2数据类型详解

说明:定义一个完整数据的类型需要如下写法,但系统会根据定义的位置等因素,将存储级别设为auto,修饰类型设为signed等情况,详见【程序现场2-2-2-1】。

定义写法:[存储级别] [修饰类型] [基本类型or复杂类型] [变量名]

一、基本数据类型

void:即空类型,通常定义无返回值的函数以及空指针。

char:即字符型,用一个字节的空间存储一个字符(ASCII码)。

int:即整型,用四个字节的空间存储一个整型的二进制数。

float:即单精度浮点型,用四个字节的空间存储一个浮点型的二进制数。

double:即双精度浮点型,用八个字节的空间存储一个浮点型的二进制数。

二、修饰类型

short:即短整型,修饰int型后可使整型用2个字节的空间存储一个短整型的二进制数。

long:即长整型,修饰int型后可使整型用4个字节的空间存储一个长整型;修饰double型可使双精度浮点型用16个字节存储一个长双精度浮点型。

signed:即有符号数,可使基本数据类型从负数表示到正数。

unsigned:即无符号数,可使基本数据类型从0表示到正数,整数的范围将扩大。

三、复杂类型

struct:即结构体类型,一个结构体可以包含多个数据类型,常用于表示一类事物。

union:即共用体类型,一个共用体中可以包含多个数据类型,但所有变量只占一块空间,一次只能使用一个类型。

enum:即枚举类型,可使枚举常量表示一个整型数字。

sizeof:用法形如函数,其作用是返回一个变量所占空间的字节数。

typedef:可以自定义数据类型名称。

四、存储级别

auto:即自动存储,是内存中代码区申明一块临时的空间。

static:即静态存储,是内存中全局区申明一快半永久的空间。

register:即寄存器存储,是使用寄存器存储一块变量的空间。

extern:用于引用其他作用域中的变量,以使该变量在本作用域中可用。

const:即常类型,其类型的变量或对象的值是不能被修改的。

volatile:确保本条指令不会因编译器的优化而省略,且要求每次直接读值。

注意点:

在C语言中数据类型所占空间没有具体的规定,具体空间由编译器决定,而编译器会限制数据表示范围,即:short与int类型至少为16位,long类型至少为32位,并且short类型不得长于int类型,而int类型不得长于long类型,因此同占四个字节的long和int表示范围不一样。

【程序现场】2-2-2:
#include<stdio.h>
typedef unsigned char uch;
uch ch; //==unsigned char
int main(void)
{printf("void =%d\n",sizeof(void));printf("char =%d\n",sizeof(char));printf("uch =%d\n",sizeof(uch));printf("int =%d\n",sizeof(int));printf("float=%d\n",sizeof(float));printf("double=%d\n",sizeof(double));printf("long long=%d\n",sizeof(long long));printf("long double=%d\n",sizeof(long double));printf("\n");short a; //==auto signed short int a;long b;  //==auto signed long int b;return 0;
}


http://www.mrgr.cn/news/43419.html

相关文章:

  • 【WeChat】Ubuntu20.04 安装非官方版微信
  • Art. 1 | 信号、信息与消息的区别及其在通信中的应用
  • k8s的简介和部署
  • 旅游心动盲盒:开启个性化旅行新体验
  • 《数据结构》学习系列
  • 【pytorch】权重为0的情况
  • Linux基本命令及vim应用实训练习
  • python 实现多位的随机验证码
  • 栈的介绍与实现
  • 国外电商系统开发-运维系统拓扑布局
  • 进程概念 | 进程状态 | 进程优先级
  • 【C++】--类与对象(1)
  • springboot系列--web相关知识探索四
  • [Linux#61][UDP] port | netstat | udp缓冲区 | stm32
  • Angular 服务器端应用 ng-state tag 的作用介绍
  • 对称加密算法的使用Java和C#
  • 【C++】vector
  • 洛谷刷题 P1042 [NOIP2003 普及组] 乒乓球
  • Linux dlsym符号查找疑惑分析
  • SAP MM学习笔记 - 豆知识10 - OMSY 初期化会计期间,ABAP调用MMPV/MMRV来批量更新会计期间(TODO)