基本数据类型简介

常见的Arduino是基于ATmega的8位 AVR单片机,例如Arduino UNO ,Arduino Nano,Arduino mega2560等。还有高级点 32位的,如Arduino Due。
由于Arduino是基于C/C++语言的,具有平台差异性,因此,其基本数据类型在这2个平台(8位机和32位机)下有差别。8位机下,int占2字节,double和float一样占4字节。而32位机下int是4字节,double是8字节。由于32位机很少见,本文就只以8位机类型讲解。
 
 
类型
字节数
范围
说明
char
 
signed  char             
 
unsigned char
1
-128 ~127
 
-128 ~127
 
0~255
Arduino中的char是有符号的,等价于signed char。范围是-128 ~127 。
char目的是用于储存ASCII字符。如果你想存储字节数据,建议使用byte来明确代码目的。
byte
1
0~255
 
byte不是C/C++标准类型,他是Arduino平台下特有的,实际就是无符号8位整型。
 
 
Arduino.h中,有这样的类型定义: typedef uint8_t byte;
int 
unsigned int
2
-32768-32767  
(2字节有符号)
 
0~65535    
(2字节无符号)
 
 
在基于ATMega的8位单片机中,如Arduino UNO,Ardunio Mega2560,int是2字节的.
 
而在有些高级Arduino板,如Arduino Due,SAMD等中,int占4字节。
long 
 
 
unsigned long
4
-2147483648 ~ 2147483647
 
0 ~ 4294967295
长整型常量末尾要用L标识出来。
如:long num  = 29596725L;
 
float
4
-3.4028235E+38 to 3.4028235E+38
 
 \
double
4
-3.4028235E+38 to 3.4028235E+38
在基于ATMega的8位单片机中,如Arduino UNO,Ardunio Mega2560,double和float没有差别,都是4字节的.
而在Due,等高级板中,占8字节。
虽然在8位机的Arduino中float和double是一样的,但是在32位平台中,double的精度比float高。
bool
1
true 、 false
实质就是C++中的bool类型,你也可以使用boolean,因为在Arduino.h中,有这样的类型定义:
typedef bool boolean;
 
 

二进制常量

C/C++是不支持在代码中直接使用二进制格式的字面值的,但是Arduino.h中包含了一个头文件 "binary.h" ,如下。其作用就是将0~255范围的整数用一组二进制格式的宏表示,这样,我们要在程序中显式的使用0~255范围内的二进制常量,则可以写成 以B开头的格式。
 
#ifndef Binary_h
#define Binary_h #define B0 0
#define B00 0
#define B000 0
#define B0000 0
#define B00000 0
#define B000000 0
#define B0000000 0
#define B00000000 0
#define B1 1
#define B01 1
#define B001 1
#define B0001 1
#define B00001 1
#define B000001 1
#define B0000001 1
#define B00000001 1
#define B10 2
#define B010 2
#define B0010 2
#define B00010 2
#define B000010 2
#define B0000010 2
#define B00000010 2
/*.......篇幅原因,省去........*/
#define B11111110 254
#define B11111111 255 #endif

包含类型大小信息的整数类型

有些做过硬件开发的人会使用类似于  int8_t  、int16_t 等形式的类型,特点是类型本身包含了类型的大小,让代码更具有移植性。在Arduino中也可以使用。
需要包含头文件 #include<inttypes.h >
/*********************整数类型************************/

typedef signed char int8_t;   //8bit有符号类型
typedef unsigned char uint8_t; // 8bit无符号类型 typedef signed int int16_t; //16bit有符号类型
typedef unsigned int uint16_t;//16bit有符号类型 typedef signed long int int32_t; //328bit有符号类型
typedef unsigned long int uint32_t; //32bit有符号类型 typedef signed long long int int64_t; //32bit有符号类型.可能无法使用
typedef unsigned long long int uint64_t; //32bit有符号类型,可能无法使用 /***************保存地址值的类型****************/ typedef int16_t intptr_t; //保存地址值的类型,有符号 typedef uint16_t uintptr_t; //保存地址值的类型,无符号 //远地址类型,用于单片机SRAM大于64K(地址编号为0~65535 )的情况,用intptr_t可能会溢出。 typedef uint32_t uint_farptr_t;
typedef int32_t int_farptr_t; /***********宏符号常量,保存了各种类型的最大,最小值**********/ INT8_MAX INT8_MIN UINT_MAX INT16_MAX INT16_MIN UINT16_MAX

INT32_MAX INT32_MIN UINT32_MAX

Arduino基本数据类型的更多相关文章

  1. Arduino单片机使用和开发问题记录

    1.将程序上传到板子时Arduino IDE提示“avrdude: stk500_getsync(): not in sync: resp=0x00” 网上查遇到这个问题的人比较多,有说驱动问题的,有 ...

  2. Arduino单片机使用和开发问题记录(转)

    源:Arduino单片机使用和开发问题记录 1.将程序上传到板子时Arduino IDE提示“avrdude: stk500_getsync(): not in sync: resp=0x00” 网上 ...

  3. Arduino常用的数据类型以及转换

    常用的数据类型有布尔类型.字符型.字节型.整型.无符号整型.长整型.无符号长整型.浮点型.双精度浮点型等 布尔类型bollean: 布尔值是一种逻辑值,其结果只能为真(true)或者假(false). ...

  4. Arduino中的数据类型范围

    注意int不是4字节而仅仅是2字节!!! int: -32,768 ~ 32,767 (2字节) long: 4字节 http://www.arduino.cc/en/Reference/Int

  5. arduino uno r3的数据类型

    char 一个字节,存储一个字符值.字符文字用单引号写成:'A' unsigned char 无符号,一个字节 byte 一个字节,无符号数, int 2字节,这产生-32768至32767的范围. ...

  6. arduino api手册

    本文由博主原创,如有不对之处请指明,转载请说明出处. arduino 函数 api 程序结构 在Arduino中, 标准的程序入口main函数在内部被定义, 用户只需要关心以下两个函数:void se ...

  7. Arduino示例教程超声波测距实验

    超声波传感器 超声波是一种超出人类听觉极限的声波即其振动频率高于20 kHz的机械波.超声波传感器在工作的时候就是将电压和超声波之间的互相转换,当超声波传感器发射超声波时,发射超声波的探头将电压转化的 ...

  8. Arduino智能小车实践学习报告

    Arduino智能小车实践学习报告 参与人员: 20135316 王剑桥 20135312 吴汉彦 20135319 朱锂 一. 背景了解: 单片机:将中央处理单元CPU(进行运算.控制).随机存储器 ...

  9. Arduino可穿戴开发入门教程(大学霸内部资料)

    Arduino可穿戴开发入门教程(大学霸内部资料) 试读下载地址:链接:http://pan.baidu.com/s/1mg9To28 密码:z5v8 介绍:Arduino可穿戴开发入门教程(大学霸内 ...

随机推荐

  1. Python学习笔记(十四):模块高级

    以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-23 21:30 学习笔记 1,包导入是把计算机上的 ...

  2. windows 2003 iis 360防黑加固后不能使用

    最近在使用360的防黑加固加固2003系统,发现IIS居然不能够使用了,报401.1错误,查找解决方案如下: 1.我的电脑-〉属性-〉管理-〉本地用户和组,查看IUSER用户是否开启,如果未开启开启后 ...

  3. 微信小程序页面返回传参的问题

    比如提交问题,然后需要返回之前页面,由于onLoad只会加载一次,所以不会触发,但是我们页面又需要刷新,那怎么办? 1.onLoad与onShow区别 onLoad:监听页面加载.一个页面只会调用一次 ...

  4. 基于php5.5使用PHPMailer-5.2发送邮件

    PHPMailer - A full-featured email creation and transfer class for PHP. 在PHP环境中可以使用PHPMailer来创建和发送邮件. ...

  5. Android系统资源图标android.R.drawable

    Android™ 2.1 android.R.drawable Icon Resources Android™ 1.5 android.R.drawable Icon Resources Androi ...

  6. linux 删除换行符

    今天需要删除文件里面的换行符,比如有一个文件a.txt: 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1.使用vim删除换行 ...

  7. 视觉SLAM中的数学基础 第二篇 四元数

    视觉SLAM中的数学基础 第二篇 四元数 什么是四元数 相比欧拉角,四元数(Quaternion)则是一种紧凑.易于迭代.又不会出现奇异值的表示方法.它在程序中广为使用,例如ROS和几个著名的SLAM ...

  8. iOS开发之Xcode9报错 Compiling IB documents for earlier than iOS7 is no longer supported.

    升级到Xcode9时,最低的编译版本为iOS8,但是在使用一些SDK的时候就会报出Compiling IB documents for earlier than iOS7 is no longer s ...

  9. 【C语言】数组名传递给函数,数组的sizeof变为4的原因

    C语言中,数组名作为参数传递给函数时,退化为指针,sizeof对指针操作结果应该是4.例子如下: #include<iostream> using namespace std; void ...

  10. C++ 重载运算符和重载函数

    C++ 重载运算符和重载函数 C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是 ...