* Alessandro Pellizzari <alex amiran it> wrote:
Hi all, today I stumbled upon a strange behaviour. I would like to know if it is expected or not: using GLib; public class Main : Object { static int main (string[] args) { stdout.printf ("uint.min => %i\n", uint.MIN); stdout.printf ("uint.max => %i\n", uint.MAX); stdout.printf ("ulong.min => %i\n", ulong.MIN); stdout.printf ("ulong.max => %i\n", ulong.MAX); stdout.printf ("uint32.min => %i\n", uint32.MIN); stdout.printf ("uint32.max => %i\n", uint32.MAX); stdout.printf ("int64.min => %i\n", int64.MIN); stdout.printf ("int64.max => %i\n", int64.MAX); stdout.printf ("uint64.min => %i\n", uint64.MIN); stdout.printf ("uint64.max => %i\n", uint64.MAX); } } This code gives: uint.min => 0 uint.max => -1 ulong.min => 0 ulong.max => -1 uint32.min => 0 uint32.max => -1 int64.min => 0 int64.max => -1 uint64.min => 0 uint64.max => -1 The other values are OK and showing expected boundaries. I am using vala 0.1.7
That is because %i is just a regular `int'. You should use the following code: | using GLib; | public class Main : Object { | static int main (string[] args) { | stdout.printf ("uint.min => %u\n", uint.MIN); | stdout.printf ("uint.max => %u\n", uint.MAX); | stdout.printf ("ulong.min => %lu\n", ulong.MIN); | stdout.printf ("ulong.max => %lu\n", ulong.MAX); | stdout.printf ("uint32.min => %lu\n", uint32.MIN); | stdout.printf ("uint32.max => %lu\n", uint32.MAX); | stdout.printf ("int64.min => %lld\n", int64.MIN); | stdout.printf ("int64.max => %lld\n", int64.MAX); | stdout.printf ("uint64.min => %llu\n", uint64.MIN); | stdout.printf ("uint64.max => %llu\n", uint64.MAX); | } | } Output: | uint.min => 0 | uint.max => 4294967295 | ulong.min => 0 | ulong.max => 4294967295 | uint32.min => 0 | uint32.max => 4294967295 | int64.min => -9223372036854775808 | int64.max => 9223372036854775807 | uint64.min => 0 | uint64.max => 18446744073709551615 Be sure to read `man 3 printf'. -- Ed Schouten <ed fxq nl> WWW: http://g-rave.nl/
Attachment:
pgpoXrrxKKXg1.pgp
Description: PGP signature