Здравствуйте!
GCC сдвиг выполняет не арифметический, не логический, а какой-то волшебный:
$ cat left64.c
#include <stdint.h>
#include <stdio.h>
#define SHIFT(N, COUNT) ({                                      \
        int a=COUNT;                                            \
        printf("a=%d\n", a);                                    \
        printf("%llu<<a = %llx\n", N, N << a);                   \
        printf("%llu<<%d = %llx\n\n", N, COUNT, N << COUNT);    \
})
int main()
{
        SHIFT(3ULL, 63);
        SHIFT(3ULL, 64);
        SHIFT(3ULL, 65);
        SHIFT(1ULL, 63);
        SHIFT(1ULL, 64);
        SHIFT(1ULL, 65);
        return 0;
}
$ gcc left64.c
$ ./a.out 
a=63
3<<a = 8000000000000000
3<<63 = 8000000000000000
a=64
3<<a = 3
3<<64 = 0
a=65
3<<a = 6
3<<65 = 0
a=63
1<<a = 8000000000000000
1<<63 = 8000000000000000
a=64
1<<a = 1
1<<64 = 0
a=65
1<<a = 2
1<<65 = 0
Как это понимать вообще?
Как сделать чтоб 1<<{переменная} и 1<<{число} выдавали одинаковый результат?

    
      Ответ на:
      
          комментарий
        от unDEFER 
  
    
      Ответ на:
      
          комментарий
        от tailgunner 
  
    
      Ответ на:
      
          комментарий
        от unDEFER 
  
    
      Ответ на:
      
          комментарий
        от tailgunner 
  

    
      Ответ на:
      
          комментарий
        от Casus 
  
    
      Ответ на:
      
          комментарий
        от Casus 
  
    
      Ответ на:
      
          комментарий
        от tailgunner 
  
    
      Ответ на:
      
          комментарий
        от Casus 
  
    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Форум Простейший вопрос - свои первые строчки на C. Где argv ? (2004)
- Форум почему так? (2014)
- Форум Интерпретируемые анекдоты на Ц :) (2005)
- Форум Вопрос по printf (2005)
- Форум Поломана совместимость с С в С++11? (2013)
- Форум fcloseall не работает (2015)
- Форум wchar_t (2013)
- Форум Как изменить максимальное число открытых файлов ? (2006)
- Форум [OMG] gcc и abs() (2008)
- Форум Что происходит в этом коде (2014)