enum kot unsigned int

Moderator: tilz0R

enum kot unsigned int

OdgovorNapisal/-a s54mtb » 14 Okt 2015, 21:50

Ali se da prepričati prevajalnik, da uporablja za enum unsigned int?

če v enum prirejam vrednost npr. 1U<<31 javi warning, da je int out of range. Načeloma bi lahko priredil vrednost -2147483648, vendar potem izgubim preglednost kode.
Always going the extra mile.
https://www.buymeacoffee.com/s54mtb
Uporabniški avatar
s54mtb
 
Prispevkov: 14710
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 2183 krat
Prejel zahvalo: 6096 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: enum kot unsigned int

OdgovorNapisal/-a Kroko » 14 Okt 2015, 21:59

Tip enuma je odvisen od prevajalnika.

The underlying type of an enumeration is an integral type that can represent all the enumerator values defined in the enumeration. It is implementation-defined which integral type is used as the underlying type for an enumeration except that the underlying type shall not be larger than int unless the value of an enumerator cannot fit in an int or unsigned int.


Šele v C++11 standardu lahko določiš tip enumeracije.
http://www.planet-cnc.com Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 6153
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 770 krat
Prejel zahvalo: 2445 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: enum kot unsigned int

OdgovorNapisal/-a s54mtb » 14 Okt 2015, 22:25

Tudi če uporabim -2147483648 jamra (ARMCC).

Sem mu "podturil" ~0x7fffffff, je pa zadovoljen :)
Always going the extra mile.
https://www.buymeacoffee.com/s54mtb
Uporabniški avatar
s54mtb
 
Prispevkov: 14710
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 2183 krat
Prejel zahvalo: 6096 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255


Vrni se na C in sorodni jeziki

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost