Zanimiva napaka

Moderator: tilz0R

Zanimiva napaka

OdgovorNapisal/-a VolkD » 23 Avg 2016, 10:36

Koda: Izberi vse
0xb01000100, 0xb01000001, 0xb01010000, 0xb00000000, 0xb11000100,
0xb10010110, // Zakasnitev


Tisti x je seveda viška. Zanimivo pa je, da se prevajalnik ne zmeni za to - vzame hexa število in je zadovoljen :)

Vzame nekaj časa,...
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 68022
Pridružen: 29 Dec 2014, 20:49
Kraj: Kačiče (Divača)
Zahvalil se je: 20945 krat
Prejel zahvalo: 10677 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Zanimiva napaka

OdgovorNapisal/-a RaInfFiMa » 23 Avg 2016, 11:03

V AVR studio 4 mi pri:

ldi r16, 0xb11111111; javi napako: Operand(s) out of range in 'ldi r16,0x11111111'

lahko je 0b???????? in pričakuje binarno zapisano število ali 0x???? in pričakuje šestnajtiški zapis
Mdr 6, 12
Uporabniški avatar
RaInfFiMa
 
Prispevkov: 838
Pridružen: 26 Jan 2015, 13:19
Kraj: Sv. Marija na hribu (nad Koprom)
Zahvalil se je: 503 krat
Prejel zahvalo: 181 krat
Uporabnika povabil: forest70
Število neizkoriščenih povabil: 35

Re: Zanimiva napaka

OdgovorNapisal/-a VolkD » 23 Avg 2016, 12:17

RaInfFiMa je napisal/-a:V AVR studio 4 mi pri:

ldi r16, 0xb11111111; javi napako: Operand(s) out of range in 'ldi r16,0x11111111'

lahko je 0b???????? in pričakuje binarno zapisano število ali 0x???? in pričakuje šestnajtiški zapis


Mišljen zapis je bil 0c11111111, napisano pa je bilo 0xb11111111.
0x je oznaka za hexa zapis, to kar sledi je b11111111, kar je povsem pravilen hexa zapis.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 68022
Pridružen: 29 Dec 2014, 20:49
Kraj: Kačiče (Divača)
Zahvalil se je: 20945 krat
Prejel zahvalo: 10677 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Zanimiva napaka

OdgovorNapisal/-a gumby » 23 Avg 2016, 13:11

VolkD:
Niti nobenega warninga ni javilo? Ta cifra je prevelika tudi za 32-bitno spremenljivko...

RaInfFiMa:
Tvoj primer je nekaj čisto drugega. Tu je povsem normalno, da dobiš napako, ker tako velike cifre asembler pač ne more stisnit v 8-bitni register :)
my brain hurts
Uporabniški avatar
gumby
 
Prispevkov: 2858
Pridružen: 14 Jan 2015, 19:49
Kraj: Lendava
Zahvalil se je: 123 krat
Prejel zahvalo: 786 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 80

Re: Zanimiva napaka

OdgovorNapisal/-a VolkD » 23 Avg 2016, 13:17

gumby je napisal/-a:VolkD:
Niti nobenega warninga ni javilo? Ta cifra je prevelika tudi za 32-bitno spremenljivko...
Ne nič. Kar pojedel je. Zadeva ima sicer več nivojev za javljanje napak in nimam vključenega najbolj ostrega, ker ne maram spama. Samo tole bi moralo javit v vsakem primeru.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 68022
Pridružen: 29 Dec 2014, 20:49
Kraj: Kačiče (Divača)
Zahvalil se je: 20945 krat
Prejel zahvalo: 10677 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Zanimiva napaka

OdgovorNapisal/-a s54mtb » 23 Avg 2016, 13:55

gnu C naj bi poznal 0b prefix. Če podaš >32 bitno konstanto je naslednji tip long. Če želiš to eksplicitno dodaj "L" ali "UL" za nepredznačene na koncu konstante. Poskusi, kaj se zgodi, če podaš konstanto, ki je daljša od 64 bitov. Verjetno bo javil napako.
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: Zanimiva napaka

OdgovorNapisal/-a gumby » 23 Avg 2016, 15:27

Izklopit warninge je pravi recept za kasnejše razbijanje glave :_banghead

AVR GCC javi tole: "large integer implicitly truncated to unsigned type [-Woverflow]"

Tudi prevelika cifra (>64 bit) mu ne paše, javi "integer constant is too large for its type [enabled by default]"
my brain hurts
Uporabniški avatar
gumby
 
Prispevkov: 2858
Pridružen: 14 Jan 2015, 19:49
Kraj: Lendava
Zahvalil se je: 123 krat
Prejel zahvalo: 786 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 80

Re: Zanimiva napaka

OdgovorNapisal/-a Kroko » 23 Avg 2016, 16:27

VolkD je napisal/-a: Zadeva ima sicer več nivojev za javljanje napak in nimam vključenega najbolj ostrega, ker ne maram spama.


Napaka. Ne samo, da moraš vključiti VSE warninge. Tudi "warning as error" mora biti vključen.
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


Vrni se na C in sorodni jeziki

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost