So one side effect of C being a mess is that bool and char constants are formatted as integers by default. You have to either cast them to the correct type or use an explicit format specifier which is a bit annoying.
@thradams@vitaut _Bool goes all the way back to C99, C23 actually deprecated it in favour of 'bool' (eg. stdbool.h no longer needed), both are "proper" bools, but AFAIK the C standard doesn't enforce a specific size
@thradams@vitaut also I suspect that the problem might be that _Bool/bool implicitly converts to int (eg I guess in vararg lists, bools are passed as int, not sure though)