Ei sillä, ei tämä nyt varsinainen ongelma ole, mutta hassua kylläkin. En tämän paremmin osaa tätä selittää:
Dim foo As Byte foo = 255 + 255 - 255 'foo = 255 ja toimii foo = foo + foo - foo 'foo = overflow!?
Onko kellään tietoa VB:n tavasta ratkaista tällaisia yhtälöitä? Mielenkiinnostuneena kysyn vaan että miksi ylempi lasku toimii mutta alempi ei? Koska numerollisestihan molemmat ovat samoja :o
Basikilla en tätä jaksanut kokeilla, mutta kaipa se siinäkin näin pirullismaisesti menee :p
Kokeilöe tehdä yks lasku kerrallaan.
niinku:
foo=foo+foo foo=foo-foo
Alemmassa laskussa Byte-tyyppisiä muuttujia koetetaan laskea yhteen, mutta välitulos ei mahdu Byte-tyyppiin. Korjaus on muuttaa vaikkapa ensimmäinen muuttuja Int-tyyppiseksi, jolloin VB tajuaa, että laskun keskellä voi esiintyä Byte-tyyppiä suurempia lukuja.
foo = CInt(foo) + foo - foo 'toimii :)
Elikkä se siis suorittaa laskun kerrallaan, ja tallentaa välituloksen kuvitteelliseen (käsiksipääsemättömään) muuttujaan, jolla on sama datatyyppi kuin laskussa esiintyvällä (tyypin puolesta) suurimmalla muuttujalla? Tämä selittää sen, miksi toisentyyppisten muuttujien laskeminen on nopeampaa kuin kolmansien. Hassua spekulatisoida tällaisilla välillä ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.