// Program: limits-E_v3.ino
/*
Determine the memory sizes and limits of datatypes
Ref: https://www.tutorialspoint.com/c_standard_library/limits_h.htm
*/
// C Programming/limits.h
// https://en.wikibooks.org/wiki/C_Programming/limits.h
// Numeric limits
// https://en.cppreference.com/w/c/types/limits
#include <limits.h>
#include <float.h>
void setup()
{
// Initialize serial and wait for port to open
Serial.begin(115200);
}
void loop()
{
// char type
Serial.print("Size of char is ");
Serial.print(sizeof(char));
Serial.println(" bytes");
// unsigned char type
Serial.print("Size of unsigned char is ");
Serial.print(sizeof(unsigned char));
Serial.println(" bytes");
// int type
Serial.print("\nSize of int is ");
Serial.print(sizeof(int));
Serial.println(" bytes");
// unsigned int type
Serial.print("Size of unsigned int is ");
Serial.print(sizeof(unsigned int));
Serial.println(" bytes");
// long type
Serial.print("Size of long is ");
Serial.print(sizeof(long));
Serial.println(" bytes");
// unsigned long type
Serial.print("Size of unsigned long is ");
Serial.print(sizeof(unsigned long));
Serial.println(" bytes");
// float type
Serial.print("\nSize of float is ");
Serial.print(sizeof(float));
Serial.println(" bytes");
// double type
Serial.print("Size of double is ");
Serial.print(sizeof(double));
Serial.println(" bytes");
Serial.print("\nSCHAR_MIN is ");
Serial.println(SCHAR_MIN);
Serial.print("SCHAR_MAX is ");
Serial.println(SCHAR_MAX);
Serial.print("CHAR_MIN is ");
Serial.println(CHAR_MIN);
Serial.print("CHAR_MAX is ");
Serial.println(CHAR_MAX);
Serial.print("\nINT_MIN is ");
Serial.println(INT_MIN);
Serial.print("INT_MAX is ");
Serial.println(INT_MAX);
Serial.print("UINT_MAX is ");
Serial.println(UINT_MAX);
Serial.print("LONG_MIN is ");
Serial.println(LONG_MIN);
Serial.print("LONG_MAX is ");
Serial.println(LONG_MAX);
Serial.print("ULONG_MAX is ");
Serial.println(ULONG_MAX);
Serial.print("\nDECIMAL_DIG is ");
Serial.println(DECIMAL_DIG);
Serial.print("FLT_RADIX is ");
Serial.println(FLT_RADIX);
Serial.print("FLT_MIN is ");
Serial.println(FLT_MIN);
Serial.print("FLT_MAX is ");
Serial.println(FLT_MAX);
Serial.print("FLT_EPSILON is ");
Serial.println(FLT_EPSILON);
Serial.print("FLT_DIG is ");
Serial.println(FLT_DIG);
Serial.print("FLT_MANT_DIG is ");
Serial.println(FLT_MANT_DIG);
Serial.print("FLT_MIN_EXP is ");
Serial.println(FLT_MIN_EXP);
Serial.print("FLT_MIN_10_EXP is ");
Serial.println(FLT_MIN_10_EXP);
Serial.print("FLT_MAX_EXP is ");
Serial.println(FLT_MAX_EXP);
Serial.print("FLT_MAX_10_EXP is ");
Serial.println(FLT_MAX_10_EXP);
Serial.print("FLT_ROUNDS is ");
Serial.println(FLT_ROUNDS);
Serial.print("FLT_EVAL_METHOD is ");
Serial.println(FLT_EVAL_METHOD);
Serial.print("\nDECIMAL_DIG is ");
Serial.println(DECIMAL_DIG);
Serial.print("DBL_MIN is ");
Serial.println(DBL_MIN);
Serial.print("DBL_MAX is ");
Serial.println(DBL_MAX);
Serial.print("DBL_EPSILON is ");
Serial.println(DBL_EPSILON);
Serial.print("DBL_DIG is ");
Serial.println(DBL_DIG);
Serial.print("DBL_MANT_DIG is ");
Serial.println(DBL_MANT_DIG);
Serial.print("DBL_MIN_EXP is ");
Serial.println(DBL_MIN_EXP);
Serial.print("DBL_MIN_10_EXP is ");
Serial.println(DBL_MIN_10_EXP);
Serial.print("DBL_MAX_EXP is ");
Serial.println(DBL_MAX_EXP);
Serial.print("DBL_MAX_10_EXP is ");
Serial.println(DBL_MAX_10_EXP);
while (1); // Dynamic halt of the program
}
/*
Size of char is 1 bytes
Size of unsigned char is 1 bytes
Size of int is 4 bytes
Size of unsigned int is 4 bytes
Size of long is 4 bytes
Size of unsigned long is 4 bytes
Size of float is 4 bytes
Size of double is 8 bytes
SCHAR_MIN is -128
SCHAR_MAX is 127
CHAR_MIN is 0
CHAR_MAX is 255
INT_MIN is -2147483648
INT_MAX is 2147483647
UINT_MAX is 4294967295
LONG_MIN is -2147483648
LONG_MAX is 2147483647
ULONG_MAX is 4294967295
DECIMAL_DIG is 17
FLT_RADIX is 2
FLT_MIN is 0.00
FLT_MAX is ovf
FLT_EPSILON is 0.00
FLT_DIG is 6
FLT_MANT_DIG is 24
FLT_MIN_EXP is -125
FLT_MIN_10_EXP is -37
FLT_MAX_EXP is 128
FLT_MAX_10_EXP is 38
FLT_ROUNDS is 1
FLT_EVAL_METHOD is 0
DECIMAL_DIG is 17
DBL_MIN is 0.00
DBL_MAX is ovf
DBL_EPSILON is 0.00
DBL_DIG is 15
DBL_MANT_DIG is 53
DBL_MIN_EXP is -1021
DBL_MIN_10_EXP is -307
DBL_MAX_EXP is 1024
DBL_MAX_10_EXP is 308
*/