In the below code snippet, why do we get an output of 600? Two questions will help me understand the behavior.
- I specified the type for variable b to be uint8_t, why doesn't the math operation restrict to the same type?
- I thought PRIu8 is the right type to print uint8_t, why isn't this working?
I was hoping to get the answer 88 which results from looping beyond the range of uint8_t
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
void main()
{
uint8_t b = 200;
printf("%" PRIu8 "\n",b+b+b);
printf("%" PRIu8 "\n",3*b);
}
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)