Как отметил Джеймс в своем комментарии, это потому, что так работает дополнение двух.
Если мы выразим другие слова, вы можете представить 2 ^ 8 = 256 видов значений. который в этом случае используется как 128 отрицательных чисел, 127 положительных чисел и нуль. Если мы использовали 7 бит для представления значения, +1 бит для знака, мы могли бы представить одно меньшее значение и также имели бы два нуля (что было бы очень неудачно, так как сравнение двух значений было бы более сложным из-за этого).
Clang поддерживает -pthread
. Может быть в последних сборках, поэтому обновите его и попробуйте снова.