输入没有问题,问题在输出
printf函数对于输出参数的是按照内存结构解释的,而不是逻辑上的,
那么
printf("%d \n%I64d \n%I64u",a,a,a); 这个操作会把3个参数当作int , __int64,__int64 解释,这样就把第一个a的8个字节的前4个字节当作一个int,然后把第一个a的后四个字节和下一个a的前4个字节当作一个__int64, 第三个参数也一样错位
对第一个a做个强制转换就行了:
printf("%d \n%I64d \n%I64u",(int)a,a,a);
请问你的“%I64d”中的‘l’是小写的L还是大写的i,正确的应该是大写的i,你再试试