095_Arduino基础数据类型探索

         本来想自己构建一个通用的数据类型,接着做一个简单的测试。我构建了我自己的数据类型定义:

#ifndef TYPEDEFS_H
#define TYPEDEFS_H

typedef unsigned char uint8_t;
typedef char int8_t;
typedef unsigned short uint16_t;
typedef short int16_t;
typedef unsigned long uint32_t;
typedef long int32_t;
typedef unsigned long long uint64_t;
typedef long long int64_t;

#endif

         但是做测试的时候,发现这些数据类型其实在Arduino的开发环境中已经存在,因此我的定义增加了之后导致了重复的定义。不过,这样也就意味着我可以直接开始使用了。

         我写了一个简单的测试程序:

#include <avr/sleep.h>
#include <SoftwareSerial.h>

void SerialCfg_Init(void)
{
    Serial.begin(9600);
    while (!Serial)
    {
        /* 等待连接 */
    }
}

void setup()
{
    // put your setup code here, to run once:
    SerialCfg_Init();
}

void loop()
{
    // put your main code here, to run repeatedly:
    Serial.print("uint8_t size: \t");Serial.println(sizeof(uint8_t));
    Serial.print("int8_t size: \t");Serial.println(sizeof(int8_t));
    Serial.print("uint16_t size: \t");Serial.println(sizeof(uint16_t));
    Serial.print("int16_t size: \t");Serial.println(sizeof(int16_t));
    Serial.print("uint32_t size: \t");Serial.println(sizeof(uint32_t));
    Serial.print("int32_t size: \t");Serial.println(sizeof(int32_t));
    Serial.print("uint64_t size: \t");Serial.println(sizeof(uint64_t));
    Serial.print("int64_t size: \t");Serial.println(sizeof(int64_t));
    Serial.print("float size: \t");Serial.println(sizeof(float));
    Serial.print("double size: \t");Serial.println(sizeof(double));
    Serial.println("-------------------------------------------");
    delay(1000);
}

         测试的效果:

095_Arduino基础数据类型探索

         看起来确实是比较通用的数据类型设计,同时可以可以看得出,其实本质上来说的话双精度是支持不了的。