Can I use %lu? My os is windows.

#include <stdio.h&gt;
#include <inttypes.h&gt;


int main(int argc, char **argv)
{
        
        int64_t a=123,b=234;
        printf("%lu %lu\n",a,b);


        return 0;
}

output:
123 0








------------------&nbsp;????????&nbsp;------------------
??????:                                                                         
                                               "avih"                           
                                                         <avih...@yahoo.com&gt;;
????????:&nbsp;2025??5??16??(??????) ????5:38
??????:&nbsp;"tinycc-devel"<tinycc-devel@nongnu.org&gt;;
????:&nbsp;"Sun"<809935...@qq.com&gt;;
????:&nbsp;Re: [Tinycc-devel] find a bug



I can confirm this output on Windows with mob f10ab130
(2025-03-28), but only with tcc 32 bit build.

And, at least on Windows, it also needs #include <inttypes.h&gt;

However, this program is buggy, because the format %d is for
int (32 bit on Windows), while the values are 64 bit, so
a mismatch and undefined behavior is expected.

The correct C99/POSIX format for 64 bit signed int is PRId64,
like so: printf("%" PRId64 " %" PRId64 "\n", a, b);

And using that, the output is correct - 111 and 222.

Bottom line, the program is buggy, and IMO it's not a bug.

- avih


On Friday, May 16, 2025 at 12:20:04 PM GMT+3, Sun via Tinycc-devel 
<tinycc-devel@nongnu.org&gt; wrote: 





#include <stdio.h&gt;

int main(int argc, char **argv)
{
int64_t a=111,b=222;
printf("%d %d\n",a,b);

return 0;
}
output:
111 0

_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to