C, int --> 2x char
Jan Waclawek
konfera na efton.sk
Čtvrtek Květen 23 14:10:45 CEST 2013
>Kdyz jsme u tech chutovek, jak delate prenos z promenne typu unsigned,
>ktera ovsem obsahuje hodnotu se znamenkem, do typu int?
>
>cili napr:
>unsigned u = 65535;
>int i;
>
>i = <neco> u;
> aby v i bylo -1 ???
C99 6.3.1.3#3
[...] the result is implementation-defined or an implementation-defined
signal is raised.
Takze ak by to malo byt v akomkolvek prekladaci korektne, tak
(predpokladajuc int16_t a uint16_t namiesto int a unsigned):
if (u >= 32768) i = (int32_t)u - (int32_t)65536; else i = u;
inak sa staci pozriet v dokumentacii do zoznamu popisujuceho
implementation-defined (to je vyzadovane normou, aj ked sa na to u
niektorych prekladacov kasle), ze ako to konkretny prekladac robi.
U drvivej vacsiny prekladacov bude stacit proste priradenie; napr. gcc
http://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html#Integers-implementation
:
For conversion to a type of width N, the value is reduced modulo 2^N to be
within range of the type; no signal is raised.
wek
Další informace o konferenci Hw-list