Should blitz determine type needed w/ #'s?

BlitzMax Forums/BlitzMax Beginners Area/Should blitz determine type needed w/ #'s?

SculptureOfSoul(Posted 2006) [#1]
Well, after dicking around for 20 minutes trying to figure out why a long variable couldn't hold the max value of an unsigned int - and why it was returning -1, I realized that in my assigment statement I needed to specify the type of the value.

In other words

const MaxIntVal:long = 4294967295

gave MaxIntVal a value of -1, whereas

const MaxIntVal:long = 4294967295:long

gave the expected results. Shouldn't Blitz automatically convert the value (especially in a const statement as I was using) to the variable type, if no date would/could be truncated/lost?


Azathoth(Posted 2006) [#2]
Isn't this the same with C with the L UL ULL suffixes?
I do agree if the variable/constant is declared on the same line as its assignment the compiler should to do this automatically.


H&K(Posted 2006) [#3]
Mark said he will fix this next release
http://www.blitzbasic.com/Community/posts.php?topic=63878#713203


SculptureOfSoul(Posted 2006) [#4]
Awesome. Good to hear it!


SculptureOfSoul(Posted 2006) [#5]
Actually, the little test I wrote up didn't use const. I found a new error - it appears you can't have a long const.

this code
Strict

Const const_long:Long = 4294967295:Long
Global big_long:Long  = 4294967295:Long

Print "Const_long =" + const_long
Print "Big_long =" + big_long


gives me this output
Const_long =-1
Big_long =4294967295



H&K(Posted 2006) [#6]
Id Post that in the bug report section


SculptureOfSoul(Posted 2006) [#7]
just did!


H&K(Posted 2006) [#8]
Yep, definitly shouldnt do that in strict without a conversion warning.

You are right in that maybe you cannot have a long const. But Ive never heard that


TomToad(Posted 2006) [#9]
Works on the Linux version of BlitzMax, I get 4294967295 for both. Haven't tried the Windows version, could possibly be a Windows bug?