数据类型
来源:互联网 发布:淘宝网男鞋休闲鞋2016 编辑:程序博客网 时间:2024/06/10 02:53
在说数据类型之前先说两样,内存和变量。
先说下内存,说内存呢 也不先说内存,先说一下计算机内部,计算机内部呢 有存储 硬盘 等数据存储介质,里面存的是就是数据,数据是以一位一位的高低电平组成的。而8位数据组成一个字节。我们假设 计算机里有一堆盒子,有的里面是高电平,有点是低电平,也就是数字 1 和 0,举个例子 计算机里面存一个 0101 0101 换算成数字就是85,
1KB = 1024字节
1MB = 1048 576字节
1GB = 1073 741 841字节
1TB = 1099 511 627 776字节
变量是什么呢 其实是PC或者其他设备指定的一块特殊内存。根据不同的变量分配不同大小的内存。
举个例子
char date; 分配了一个字节 也就是8位
int temp; 分配了两个字节 也就是16位
float num; 分配了四个字节 也就是32位
变量定义的方式是 类型 + 变量名 比如 char date char 就是定义类型 date 就是变量名
数据类型主要是一下几类
整型:
关键字 占用字节数
char (有符号) unsigned char (无符号) 1
short int (有符号) unsigned short int (无符号) 2
int (有符号) unsigned int (无符号) 4
long int (有符号) unsigned long int (无符号) 4
long long int (有符号) unsigned long long int (无符号) 8
浮点数:
关键字 占用字节数
float 4
double 8
long double 12
关于以上的变量定义,字节什么的 用以下代码说明。
在此之前 先介绍一个函数 叫 sizeof 这是专门测量长度的。用法很简单 就是sizeof(要测量的数据)
#include <stdio.h>int main(void){ printf("char的长度是%d\n", sizeof(char)); printf("short int的长度是%d\n", sizeof(short int)); printf("int的长度是%d\n", sizeof(int)); printf("long int的长度是%d\n", sizeof(long int)); printf("long long int的长度是%d\n", sizeof(long long int)); printf("float的长度是%d\n", sizeof(float)); printf("double的长度是%d\n", sizeof(double)); printf("long double的长度是%d\n", sizeof(long double)); return 0;}
执行效果:
由此我们能看到了不同类型所占用的字节数,要根据需求选择我们需要的类型,小心浪费。PC还好说对于 mcu来说FLASH就是钱啊,一定要注意啊。
#include <stdio.h>char date1 = 123; //定义变量并赋值int date2; //单纯定义变量long int date3 = 123456789;long long int date4;float date5 = 1.23;double date6;int main(void){ printf("date1数值内容为%d\n", date1); date2 = 12345; //变量赋值 printf("date2数值内容为%d\n", date2); printf("date3数值内容为%ld\n", date3); date4 = 1234567890123; printf("date4数值内容为%lld\n", date4); printf("date5数值内容为%f\n", date5); date6 = 1.23456; printf("date6数值内容为%lf\n", date6); return 0;}
顺便说几个 关键词 #define typedef
#define 是一种宏定义 常用的方式就是用一个东西替换另外一个东西。
如 #define PI 3.14 就是用PI代替3.14 以后代码出现的PI 均可代替3.14 如果需要修改的话,只需要修改这么一处就可以了
这种应该算是简单替换 除了可以代替常量 还可以代替 字符 关键字等
如 #define uchar unsigned char
另外 #define 除了可以代替 常量之外 还可以用作 函数
如 #define max(x,y) (x)>(y)?(x):(y);
说道#define 就要说下配套的 #undef 用于取消宏
#define PI 3.14 定义宏
#undef PI 取消宏
和#define 类似的的 有个typedef 它有些用法 和 define 类似 ,原理却不一样 。
#define 只是预处理 单纯的 进行替换 ,没啥讲究也不检查。 #typedef 偏向于类型的 定义。 你可以看到它都没有#号 不属于预处理范围内
举个例子:
typedef char *ptr_char 就是把ptr_char 定义成指向字符的指针。 ptr_char 就等于 char *
可以定义 put_char a;
typedef struct student 定义结构体类型。 Stu 就等于 struct student
{
int * name;
char age;
} Stu
可以定义 Stu raul;
定义变量可以有很多限定符 (存储类型) auto static extern register const
在设备中有三个地方可以存储变量 : 普通内存 , 运行时的堆栈 , 硬件寄存器。
auto 定义的是自动类型 你平时定义变量 不加这种存储类型限定符 默认就是 auto 也就是存在 堆栈中,一般就是 需要这个变量时 这个变量会被建立 完事就被销毁。
static 定义的是静态类型 一直都存在与静态内存中,还会限定作用域。
extern 外部声明其实东西没多,就是让编译器知道 有这么个东西。其实就是扩大作用域。
register 寄存器类型 就是把变量存在寄存器中,如果是常用的,可以这么做,不过不推荐。
const 是只读的意思 定义过后 就不改了。
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- 数据类型
- Esper事件处理引擎_2_Map 数据结构处理
- FATE(二维多重背包)
- C. Hamburgers
- MVC-强类型模型与@model关键字
- Native App
- 数据类型
- Windows平台上安装Hadoop-0.20.203.0版本方法
- 用流复制文件夹或文件夹
- POJ 3468 A Simple Problem with Integers(线段树区间修改)
- Java中泛型 使用
- JavaScript提高:001:ASP.NET使用easy UI
- hdu 1171 Big Event in HDU
- ACM C++整行读入方法 大集合
- 杭电1072————搜索之广搜+结构体的前驱应用