史蒂夫乔布斯pdf百度云:C语言中int数据用"%ld"输出,结果很费解,哪位高手说下它的原理?

来源:百度文库 编辑:高校问答 时间:2024/04/29 04:49:33
main()
{int a;
scanf("%d",&a);
printf("%ld\n%lu\n",a,a);
}
高十六们补什么,能说一下原理吗?
这个问题我试过好多次,有符号输出高十六位补低十六位本身,也就是高低一样,无符号输出,高十六位补1111 1111 1101 1110 B,如果说高十六位使用了不属于自身的存储单元,那么里面的数值是不确定的,又为什么每次运行所得数据还是一样?32767试我用32767与-过.
还望高手们再指点一下,小弟在此先谢过了!

%ld -- 十进制长整数型输出。
%lu -- 十进制长无符号整数型输出。

用负数,就能看到ld,lu的区别。
长整数型数的位数由编译器种类决定。

不补什么,内存里是什么就是什么

也就是说,你使用了不属于你的内存空间。

如果是用%ld和%lu,最好在之前用long 来定义数据的类型,另外,长整型的数在tc中是4个字节的,如果不是用非常大的整数时最好使用int 因为这些数据定义后会占用字节的,所以不需要很大的数时就用占字节少的来定义。

如果是用%ld和%lu,最好在之前用long 来定义数据的类型,另外,长整型的数在tc中是4个字节的,如果不是用非常大的整数时最好使用int 因为这些数据定义后会占用字节的,所以不需要很大的数时就用占字节少的来定义。