物联网开发笔记——嵌入式开发之Linux系统中C语言数据类型

前言

我主要是做工业自动化方面和物联网方面的。了解熟悉工业自动化领域的,也开发过物联网相关的产品。我的初衷是做工业物联网的,但这个系统太过于庞大。所以就先做小的系统,例如构建一整套智能家居系统,从硬件到软件全系列。下面就开始这套智能家居系统是如何在物联网基础上构建。在这里你可以0开始,然后到1质变,仅仅需要一起跟我学物联网系列的开发笔记的文章。

第一节物联网开发笔记——嵌入式开发之Linux系统环境搭建主要讲解了在Windows系统下,用虚拟机的方法搭建环境。第二节物物联网开发笔记——嵌入式开发之Linux系统中文件和目录相关命令主要讲解Linux系统如何创建文件删除修改等相关命令。第三节物联网开发笔记——嵌入式开发之Linux系统Vi编辑器的使用主要讲解Vi编辑器的使用。第四节物联网开发笔记——嵌入式开发之Linux系统中C程序的编译与调试主要讲解C语言程序的编译与调试。嵌入式开发学习C语言打下基础。本节介绍《Linux系统中C语言数据类型》。

1 数据类型分类

short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型

列出了关于标准整数类型的存储大小和值范围的细节:

 

注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。具体可以用sizeof测试一下即可。

列出了关于浮点类型的存储大小和值范围的细节:

2 基本数据类型

1)逻辑类型

只有两个true和false,表示逻辑真值和逻辑假值。

bool类型,值域:非零(true),零(false)。

If(-1)

X=12;

else

X=-18;

上面程序中条件-1为非零(true),执行X=12;

ctype/bool.c例子:

ctype/bool2.c例子:

注意:bool类型需要引入库文件:<stdbool.h> _Bool为基本类型。

2)整型类型

包括char,short,int和long。

使用char类型注意,防止数据超出值域。

如:char c1 = 128; //出错,数据越界(-128)

char c1 = 129; //出错,数据越界(-127)

unsigned char c2 = -1; //出错,数据越界(255)

注:

-127 原码: 1 111 1111

反码: 1 000 0000

补码: 1 000 0001

-128 补码: 1 000 0000

ctype/char.c例子:

ctype/int.c例子:添加头文件<limits.h>

为了得到某个类型或某个变量在特定平台上的准确大小,您可以使用 sizeof 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小。下面的实例演示了获取 int 类型的大小:

3)浮点类型

包括float和double。

4)Void类型

类型说明符 void 表明没有可用的值。void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。

3 强制类型转换

1)数据类型转换:C 语言中如果一个表达式中含有不同类型的常量和变量,在计算时,会将它们自动转换为同一种类型;在 C 语言中也可以对数据类型进行强制转换;

2)自动转换规则:

a浮点数赋给整型,该浮点数小数被舍去;

b整数赋给浮点型,数值不变,但是被存储到相应的浮点型变量中;

3)强制类型转换形式: (类型说明符)(表达式)

ctype/push.c例子:

例中先计算 x+y 值为 8.8,然后赋值给 a,因为a为整型,所以自取整数部分8,a=8;

接下来 b 把 x+y 强制转换为整型;最后 10/i 是两个整数相除,结果仍为整数 2,把 2 赋给浮点数 f;x 为浮点型直接输出。

注:文章来源于网络,如有侵权请联系删除、

2020年8月26日 16:05