Skip to content

Instantly share code, notes, and snippets.

@rtoal
Created October 2, 2017 03:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rtoal/a347265a4c237ea2e459f9a00f5a946f to your computer and use it in GitHub Desktop.
Save rtoal/a347265a4c237ea2e459f9a00f5a946f to your computer and use it in GitHub Desktop.
A C++ program with a crazy macro to print ranges of numeric types
#include <cstdint>
#include <climits>
#include <cassert>
#include <iostream>
using namespace std;
#define show_type_range(t, min, max)\
cout << #t << " (" << sizeof(t) << " bytes): " << min << ".." << max << '\n';
int main() {
show_type_range(signed char, SCHAR_MIN, SCHAR_MAX)
show_type_range(unsigned char, 0, UCHAR_MAX)
show_type_range(char, CHAR_MIN, CHAR_MAX)
show_type_range(short, SHRT_MIN, SHRT_MAX)
show_type_range(unsigned short, 0, USHRT_MAX)
show_type_range(int, INT_MIN, INT_MAX)
show_type_range(unsigned int, 0, UINT_MAX)
show_type_range(long, LONG_MIN, LONG_MAX)
show_type_range(unsigned long, 0, ULONG_MAX)
show_type_range(long long, LLONG_MIN, LLONG_MAX)
show_type_range(unsigned long long, 0, ULLONG_MAX)
show_type_range(int8_t, INT8_MIN, INT8_MAX)
show_type_range(uint8_t, 0, UINT8_MAX)
show_type_range(int16_t, INT16_MIN, INT16_MAX)
show_type_range(uint16_t, 0, UINT16_MAX)
show_type_range(int32_t, INT32_MIN, INT32_MAX)
show_type_range(uint32_t, 0, UINT32_MAX)
show_type_range(int64_t, INT64_MIN, INT64_MAX)
show_type_range(uint64_t, 0, UINT64_MAX)
show_type_range(intmax_t, INTMAX_MIN, INTMAX_MAX)
show_type_range(uintmax_t, 0, UINTMAX_MAX)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment