> Эй лолки, man 3 printf для начала. С вашим %d вы такие
> забавные. В данном случае рояля не играет, т.к. unsigned char расширится до unsigned int со значением 255, и всё будет выведено корректно, как Вы знаете, на стек char положить никак нельзя, кладётся (ну или ложится) только словами.
> А builtin это прекрасно но не по стандарту и специфично
> для компилера, увы.
Я в курсе, по стандарту именно как Вы написали - переполнение беззнаковых вполне себе определено.
>[оверквотинг удален]
> начала. Если вы ЭТОМУ uint скармливаете от большого ума - там
> так то и отрицательное число может нарисоваться в принципе. Но вы
> ж сами попросили этим спецификатором рассмотреть вон то, на входе, как
> знаковое. Разумеется конверсия uint -> signed в недрах printf это нечто
> implementation defined.
> Чисто теоретически компилер мог бы и предупредить что вы какую-то хрень printf
> дали. Для некоторых наиболее очевидных даже и предупреждает, но до вот
> этого видимо не добрались еще. Или вы не включили всякие -Wall
> -Wextra -Wconversion чтобы узнать о себе и своих кодинг скилах кое-что
> новое.
$ gcc -Wall -Wextra -Wconversion q.c
q.c: In function 'main':
q.c:3:14: warning: unused parameter 'argc' [-Wunused-parameter]
3 | int main(int argc, char* argv[])
| ~~~~^~~~
q.c:3:26: warning: unused parameter 'argv' [-Wunused-parameter]
3 | int main(int argc, char* argv[])
| ~~~~~~^~~~~~
$ gcc --version
gcc.exe (MinGW.org GCC Build-2) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ gcc -Wall -Wextra -Wconversion q.c
q.c: In function ‘main’:
q.c:3:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
3 | int main(int argc, char* argv[])
| ~~~~^~~~
q.c:3:26: warning: unused parameter ‘argv’ [-Wunused-parameter]
3 | int main(int argc, char* argv[])
| ~~~~~~^~~~~~
$ gcc --version
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.