Le ven. 15 mars 2019 à 19:03, Alex Herbert <alex.d.herb...@gmail.com> a écrit :
>
> PS. Did you try this test program to check the size of the unsigned long?

I'm on 64-bits Debian GNU/Linux, so...

sizeof(int) = 4
sizeof(long) = 8
sizeof(unsigned long) = 8
sizeof(uint32_t) = 4
sizeof(double) = 8
[... same as yours, below ... ]

Gilles

> >
> >
> > The c standard for long states that it can be 32-bits or more! So to check 
> > what happens on my 64-bit test machine:
> >
> > #include <stdio.h>
> > #include <limits.h>
> > #include <stdint.h>
> >
> > int main(void){
> >     printf("sizeof(int) = %d\n", (int)sizeof(int));
> >     printf("sizeof(long) = %d\n", (int)sizeof(long));
> >     printf("sizeof(unsigned long) = %d\n", (int)sizeof(unsigned long));
> >     printf("sizeof(uint32_t) = %d\n", (int)sizeof(uint32_t));
> >     printf("sizeof(double) = %d\n", (int)sizeof(double));
> >     unsigned long value = 1;
> >     for (int i = 1; i <= 8 * (int)sizeof(unsigned long); i++) {
> >         printf("[%d] %lu = %u\n", i, value, (uint32_t) value);
> >       value = (value << 1);
> >     }
> >     return 0;
> > }
> >
> > > gcc test.c && ./a.out
> >
> > sizeof(int) = 4
> > sizeof(long) = 8
> > sizeof(unsigned long) = 8
> > sizeof(uint32_t) = 4
> > sizeof(double) = 8
> > …
> > [31] 1073741824 = 1073741824
> > [32] 2147483648 = 2147483648
> > [33] 4294967296 = 0
> > [34] 8589934592 = 0
> > …
> >
> >
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to