1、不一样输出格式会有不一样的结果git
1.%ld 用于long类型的值,若是系统中int和long大小相同,使用%d就能够,这样的程序被移植到其余系统(int和long类型的大小不一样)。github
2.一样x和o前面也能够使用l来修饰。小程序
3.对于short类型,前面就是使用h来当前缀。微信
4.h和l前缀均可以和u一块儿连用,用于表示无符号的类型。例如:%lu学习
/*print2.c --更多printf()的特性*/ #include<stdio.h> int main(void) { unsigned int un = 300000000;/*int为32位和short为16位的系统*/ short end = 200; long big = 65537; long long verybig = 1234567890642; printf("un= %u and not %d \n", un, un); printf("end = %hd and %d \n", end, end); printf("big = %ld and not %hd", big, big); printf("verybig = %lld and not %ld \n", verybig, verybig); return 0; }
分析:大数据
(1)从上面生成的数据来看,第一行中是由于30000000这个数字在系统内部存储的方式是同样,只不过咱们使用了不一样的打印方式,因此获得了不一样的结果。在待打印的值大于有符号值的最大值的时候会出现这种状况。ui
(2)第二行,中的疑问,C编译器会把short类型自动转换成int类型的值,为何呢?spa
由于int类型被认为是计算机处理整数类型最高效的类型。.net
(3)那么这里的h修饰符又有什么做用呢?code
使用h修饰能够显示较大整数被截断成short类型值的状况,例如:65537以二进制的形式表示为000000000000010000000000001,使用%hd只会查看后面16位的状况;
插曲:
今天晚上装上了Visual studio 2019,可是写了一个小程序,就是编译报错
报错:找不到..........exe文件,通过多方求证,搞了半天才搞对。
咱们新建一个“空项目”(不是其余的选项哦!!)
而后建立一个空项目以后,而后右键点击“源文件”,选择C++项目,(咱们这里能够手动改为C项目,就是后缀名直接改为.c既可),而后编辑代码,咱们先要点击生成(build)-生成解决方案(build solution)以后,而后在点击直接运行就能够正常运行了,若是咱们不先点击生成解决方法,就会报错。
3、源码:
D8_1_print.c
https://github.com/ruigege66/CPrimerPlus/blob/master/D8_1_print.c
D7_toobig.c
https://github.com/ruigege66/CPrimerPlus/blob/master/D7_toobig.c
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,我的帐号,仅用于技术交流,后台回复“礼包”获取Java大数据学习视频礼包