Re: [Vala] Why is 77 greater than 4294967295?
- From: Michele Dionisio <michele dionisio gmail com>
- To: Jason Martin <agrellum gmail com>
- Cc: Vala List <vala-list gnome org>
- Subject: Re: [Vala] Why is 77 greater than 4294967295?
- Date: Fri, 23 Nov 2018 06:45:57 +0100
You are working on an architecture where long and int have the same size.
And at the end you compare a long with an unsigned int. The unsigned int is
converted to long and the maximum unsigned long is a negative signed long.
Il giorno ven 23 nov 2018, 04:34 Jason Martin via vala-list <
vala-list gnome org> ha scritto:
// simple vala code
void main () {
long i = 77;
stdout.printf ("%ld\n", i);
// outputs 77
stdout.printf ("%u\n", uint.MIN);
// outputs 0
if (i < uint.MIN) {
stdout.printf ("Never made it here.\n");
}
stdout.printf ("%u\n", uint.MAX);
// outputs 4294967295
// G_MAXUINT
if (i > uint.MAX) {
stdout.printf ("Why am I here.\n");
}
}
valac --cc=gcc gbug.vala
C code generated
/* gbug.c generated by valac 0.40.11, the Vala compiler
* generated from gbug.vala, do not modify */
#include <glib.h>
#include <glib-object.h>
#include <stdio.h>
void _vala_main (void);
void
_vala_main (void)
{
glong i = 0L;
FILE* _tmp0_;
glong _tmp1_;
FILE* _tmp2_;
glong _tmp3_;
FILE* _tmp5_;
glong _tmp6_;
i = (glong) 77;
_tmp0_ = stdout;
_tmp1_ = i;
fprintf (_tmp0_, "%ld\n", _tmp1_);
_tmp2_ = stdout;
fprintf (_tmp2_, "%u\n", 0);
_tmp3_ = i;
if (_tmp3_ < ((glong) 0)) {
FILE* _tmp4_;
_tmp4_ = stdout;
fprintf (_tmp4_, "Never made it here.\n");
}
_tmp5_ = stdout;
fprintf (_tmp5_, "%u\n", G_MAXUINT);
_tmp6_ = i;
if (_tmp6_ > ((glong) G_MAXUINT)) {
FILE* _tmp7_;
_tmp7_ = stdout;
fprintf (_tmp7_, "Why am I here.\n");
}
}
int
main (int argc,
char ** argv)
{
_vala_main ();
return 0;
}
_______________________________________________
vala-list mailing list
vala-list gnome org
https://mail.gnome.org/mailman/listinfo/vala-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]