Я не понимаю, что именно происходит в этой комбинации унарных операторов.Я знаю, что, когда вы наберете его, он в конечном итоге выдаст наименьшее значение знака со знаком, я не понимаю, как именно.
То, что я думаю, это решение ========================================================================
~ - это унарный оператор, который фактически означает то же самое, что и логический операнд «НЕ», верно?
Значит, не символ означает что?Все в char уменьшается до 0?
Разве символ не приводится к неподписанному символу?
затем мы приводим char к unsigned, но все, что не равно 0, перемещается на 2 ^ 1, поскольку >> 1 - это то же самое, что и 2 ^ 1, верно?
========================================================================
#include <stdio.h>
int main(){
printf("signed char min = %d\n", ~(char)((unsigned char) ~0 >> 1));
return 0;
}
Он производит наименьший символ со знаком, который работает, но я просто хочузнать, что происходит под капотом, потому что не совсем понятно.