Portál AbcLinuxu, 13. května 2025 22:47

Dotaz: sizeof(short int)

6.9.2010 18:45 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
sizeof(short int)
Přečteno: 505×
Odpovědět | Admin
Jen tak pro zajímavost: setkal jste se někdy někdo s kombinací procesoru a překladače C, u které by sizeof(short int) * CHAR_BIT != 16?
Užívej dne – možná je tvůj poslední.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.9.2010 23:12 kocour_easy | skóre: 4
Rozbalit Rozbalit vše Re: sizeof(short int)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Myslim, ze to na procesoru nezalezi. Na procesoru vzdy zalezelo velikost int. Vzdycky v C platilo toto pravidlo

short <= int <= long

Uz si nevzpominam,ale co zkusim 16bit borland pro DOS.
6.9.2010 23:40 Dadam | skóre: 12 | blog: dadamovo
Rozbalit Rozbalit vše Re: sizeof(short int)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co toto? Ne každý byte má (měl) 8 bitů.
A i B mají svoje výhody a nevýhody. Vyberte si to, co vám vyhovuje víc, a necpěte A tam, kam patří B.
7.9.2010 05:57 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: sizeof(short int)
Tak na wikipedii píšou, že Unicos má short 64bitový. Ale, že by mohly existovat třeba 12bitové procesory mě napadlo taky až teď ráno… :)
Užívej dne – možná je tvůj poslední.
7.9.2010 08:28 __dark__
Rozbalit Rozbalit vše Re: sizeof(short int)
Možná dřív;)
7.9.2010 08:29 __dark__
Rozbalit Rozbalit vše Re: sizeof(short int)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Záleží na tom, k čemu to potřebuješ? Je problém použít uint16_t?
7.9.2010 09:09 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: sizeof(short int)
Jediný problém je v tom, že intN_t/uintN_t nepodporují zdaleka všechny překladače. Zajímá mě, jaká je pravděpodobnost, že narazím, když si svůj datový typ U16/I16 nadefinuju pomocí (unsigned) short.

Pozn.: používám různé procesory, u kterých se vzájemně liší CHAR_BIT, takže datové typy musím stejně definovat pro každý zvlášť. Tohle je jen takové cvičení.
Užívej dne – možná je tvůj poslední.
7.9.2010 10:21 luky
Rozbalit Rozbalit vše Re: sizeof(short int)
Co tak pouzit assert pocas kompilovania. Ja som nasiel nieco take:

#define COMPILE_TIME_ASSERT(expr)   \
    char constraint[expr]

COMPILE_TIME_ASSERT(sizeof(unsigned short) * CHAR_BIT >= 16);

7.9.2010 15:35 zulu
Rozbalit Rozbalit vše Re: sizeof(short int)
...u které by sizeof(short int) * CHAR_BIT != 16...
...používám různé procesory, u kterých se vzájemně liší CHAR_BIT...
Pak ses s tou nerovností asi už mnohokrát setkal a nechápu na co se ptáš.
7.9.2010 18:26 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: sizeof(short int)
Osobně ne. Procesory, které používám mají bajt buď osmibitový nebo šestnáctibitový a short int je u nich vždycky 16bitový.
Užívej dne – možná je tvůj poslední.
7.9.2010 11:08 l4m4
Rozbalit Rozbalit vše Re: sizeof(short int)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na Cray je standardní model SILP64, tj. všechny integery (short, int, long) a pointer 64bitové. IIRC to nějací lidi experimentálně používají i na AMD64, Alphě a PowerPC, ale osobně jsem to neviděl.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.