Если char c = 0x80, почему printf («% d \ n», c << 1) выводит -256?

#include<stdio.h>
int main(void)
{
  char c = 0x80;
  printf("%d\n", c << 1);
  return 0;
}

В этом случае результат будет -256 . Если я напишу c << 0 , то на выходе будет -128 .

Я не понимаю логику этого кода.

5
задан Mark Elliot 23 October 2010 в 02:38
поделиться