Skip to content

Automatically select the smallest integer type that can contain a given range at compile time

License

Notifications You must be signed in to change notification settings

Enhex/small_int

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

small_int

Automatically select the smallest integer type that can contain a given range at compile time

Example

#include <small_int.h>
int main()
{
	// evaluates into unsigned char, assuming it's the smallest integer type that can represent the value range [0,100]
	integer<100> i;
	// evaluates into int_least8_t
	int_least<-100, 100> l;
	// evaluates into int_fast16_t
	int_fast<1, -1000> f;
}

For more examples, see this. Possible output:

unsigned:
max=1 -> unsigned char 1
(unsigned char) max=255 -> unsigned char 1
(unsigned short) max=65535 -> unsigned short 2
(unsigned int) max=4294967295 -> unsigned int 4
(unsigned long) max=4294967295 -> unsigned int 4

signed:
(max=-1, min=-2) -> char 1
(max=0, min=-1) -> char 1
(max=1, min=-1) -> char 1
(max=1, min=-1000) -> short 2

(char) (max=127, min=-128) -> char 1
(short) (max=32767, min=-32768) -> short 2
(int) (max=2147483647, min=-2147483648) -> int 4
(long) (max=2147483647, min=-2147483648) -> int 4
(long long) (max=9223372036854775807, min=-9223372036854775808) -> __int64 8

signed (max=0):
(char) (max=0, min=-128) -> char 1
(short) (max=0, min=-32768) -> short 2
(int) (max=0, min=-2147483648) -> int 4
(long) (max=0, min=-2147483648) -> int 4
(long long) (max=0, min=-9223372036854775808) -> __int64 8

least (1000) -> unsigned short
fast (1000) -> unsigned int

range -> char
flipped_range -> char

About

Automatically select the smallest integer type that can contain a given range at compile time

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages