c - Fixed width, minimum width and fastest minimum width unsigned 8 bit integer -
three days read article on choosing correct integer size. before reading article, unaware of these 3 keywords viz:
1) fixed width unsigned 8-bit integer: uint8_t. (typedef's c99 complaints)
2) minimum width unsigned 8-bit integer: uint_least8_t.
3) fastest minimum width unsigned 8-bit integer: uint_fast8_t.
so question are:
1) mean saying "at least 8 bits wide" uint_least8_t & uint_fast8_t. example, let's take @ snippet of code
for(u16 i=0;i<counter;i++) { increment_counter++; } here :- u16 means unsigned short. counter , increment_counter 2 variables
when counter =0xff; increment_counter work fine type of keyword declaration. when counter =0x01ff; kind of declaration should choose? uint_least8_t (who guaranteed @ least 8 bits wide) or unit16 type?
2) how choosing uint_fast8_t affects code speed.
3) how choosing uint_least8_t consumes lesser data memory unsigned char.
i webbed doubts got nothing. appreciated.
thanks in advance
1) mean saying "at least 8 bits wide"
it means compiler map type appropriate target, guarantee have type it's @ least 8 bits. concern should not limited question of "what type should make index guards postincrement" -- should focus on sane usage within 8 bits.
so, yes, on lookout overflow think hard whether makes sense design. have user-input, example? or counting static elements of design, perhaps? let's uint_fast8_t framistan_modules declared count number of "framistan" functions. have defined 3 , can't imagine why you'd ever need more 5.
2) how choosing uint_fast8_t affects code speed.
it's difficult code speed without empirical metrics. idea behind type compiler might choose register-width type uint_fast8_t, if registers larger 8 bits.
3) how choosing uint_least8_t consumes lesser data memory unsigned char.
this unlikely case impossible. however, it's similar _fast8_t in you're giving compiler degree of freedom (not merely 8 bits). difference here you're not optimizing speed in fast, there may different balance between register width , other.
in general, if you've gotten far enough asking these questions, gain witnessing different code that's generated in these conditions. , in likelyhood you'd served measuring performance , memory consumption each.
Comments
Post a Comment