[c] странности при сдвиге short-а?

apl13

D:\c>type short.c
#include <stdio.h>

int main
{
short wtf = 0x1111;
printf("%x -> %x\n", wtf, wtf << 4);
return 0;
}

D:\c>gcc short.c

D:\c>a.exe
1111 -> 11110

D:\c>0_o
"0_o" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Или я просто опять чего-то не понимаю? o_0

vall

в с такие операции вроде как меньше чем над интом не производятся — все аргументы превращаются сначала в инты

apl13

Не люблю такой кастинг! :( Вот в наше время, помню, накастят, бывало, файрбол - вот это кастинг!.. а тут... :cry:

vall

это тебе к страуструпу надо — там такого накастят, мало не покажется =)

Serab

такие
любые арифметические, называется расширения, да. Это обычно преподносит много сюрпризов.
т.е. там всякие

unsigned short x = 65535;
x = (x + 1) / 2;
assert( x == 32768 );

pitrik2

в с такие операции вроде как меньше чем над интом не производятся — все аргументы превращаются сначала в инты
если не ошибаюсь то это в большинстве языков так

slonishka

в с такие операции вроде как меньше чем над интом не производятся — все аргументы превращаются сначала в инты
не! это все верно.
но у него же еще один абстракшн лик есть в проге.
ден, надо шорты выводить %hx. printf(3).
у тебя прога тогда заработает без приведений типов.
судя по тексту, тебе с этим сдвигом ничего не надо делать кроме принтфа.
иначе ты бы его в переменную положил, как программист на языке со статической типизацией.
Оставить комментарий
Имя или ник:
Комментарий: