As far as I understand, the number of bytes used for int
is system dependent. Usually, 2 or 4 bytes are used for int
.
As per Microsoft's documentation, __int8
, __int16
, __int32
and __int64
are Microsoft Specific keywords. Furthermore, __int16
uses 16-bits (i.e. 2 bytes).
Question: What are advantage/disadvantage of using __int16
(or int16_t
)? For example, if I am sure that the value of my integer variable will never need more than 16 bits then, will it be beneficial to declare the variable as __int16 var
(or int16_t var
)?
UPDATE: I see that several comments/answers suggest using int16_t
instead of __int16
, which is a good suggestion but not really an advantage/disadvantage of using __int16
. Basically, my question is, what is the advantage/disadvantage of saving 2 bytes by using 16-bit version of an integer instead of int
?
Saving 2 bytes is almost never worth it. However, saving thousands of bytes is. If you have an large array containing integers, using a small integer type can save quite a lot of memory. This leads to faster code, because the less memory one uses the less cache misses one receives (cache misses are a major loss of performance).
TL;DR: this is beneficial to do in large arrays, but pointless for 1-off variables.
The second use of these is if for dealing with binary files and messages. If you are reading a binary file that uses 16-bit integers, well, it's pretty convenient if you can represent that type exactly in your code.
BTW, don't use microsoft's versions. Use the standard versions (std::int16_t
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With