基本数据类型简介

常见的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. mysql5.7报err 1055错误 sql_mode=only_full_group_by

    vim /etc/my.cnf 末尾增加 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_B ...

  2. 程序日志--ios“考反应扑克游戏”程序

    交代一下我做程序的工具:mac os x虚拟机10.9.3         Xcode6         百度^-^         參考书iPhone30天精通 总结与经验,还有遇到的问题,都在程序 ...

  3. ui-router 1.0 003 lazyloading

    ui-router lazyloading 支持懒加载, 真正需要的时候再去加载模块

  4. document.domain 实现跨域

    该方式只能用于二级域名相同的情况下,比如 a.test.com 和 b.test.com 适用于该方式. 只需要给页面添加 document.domain = 'test.com' 表示二级域名都相同 ...

  5. 【AI】Exponential Stochastic Cellular Automata for Massively Parallel Inference - 大规模并行推理的指数随机元胞自动机

    [论文标题]Exponential Stochastic Cellular Automata for Massively Parallel Inference     (19th-ICAIS,PMLR ...

  6. Buffering of C streams

    This chapter describes buffering modes used by z/OS XL C/C++ library functions available to control ...

  7. Android 网络知识必知必会

    目录: 网络分层 TCP 和 UDP 区别 TCP 三次握手以及为什么需要三次握手 UDP 四次挥手以及为什么需要四次挥手 socket 开发相关 Http 是什么 Https 是什么以及和 HTTP ...

  8. etcd 集群运维实践

    etcd 是 Kubernetes 集群的数据核心,最严重的情况是,当 etcd 出问题彻底无法恢复的时候,解决问题的办法可能只有重新搭建一个环境.因此围绕 etcd 相关的运维知识就比较重要,etc ...

  9. C# ToShortDateString() ToString() 设置日期格式的区别

    在C#中,ToShortDateString()是用于显示短日期格式的方法,如果使用下面的语句: Label1.Text = DateTime.Now.ToShortDateString(); 那么, ...

  10. lua -- 系统提示框

    -- -- Author: chentong -- Date: 2014-3-24 -- 系统提示: -- 先做个简单的,在中上位置出现提示,逐渐消失,如果有新提示,则直接删除旧提示. -- 规则: ...