zoukankan      html  css  js  c++  java
  • C连载8-Printf中格数输出的不同样式以及原理分析

    一、不同输出格式会有不同的结果

    1.%ld   用于long类型的值,如果系统中int和long大小相同,使用%d就可以,这样的程序被移植到其他系统(int和long类型的大小不同)。

    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 
    ", un, un);
    
      printf("end = %hd and %d 
    ", end, end);
    
      printf("big = %ld and not %hd", big, big);
    
      printf("verybig = %lld and not %ld 
    ", verybig, verybig);
    
    ​
    
      return 0;
    
    }

    ​分析:

    (1)从上面生成的数据来看,第一行中是因为30000000这个​数字在系统内部存储的方式是一样,只不过我们使用了不同的打印方式,所以得到了不同的结果。在待打印的值大于​有符号值的最大值的时候会出现这种情况。

    (2)第二行,中的疑问,C编译器会把short类型自动转换成int类型的值,为什么呢?

    因为int类型被认为是计算机处理整数类型最高效的类型。

    (3)​那么这里的h修饰符又有什么作用呢?

    使用h修饰可以显示较大整数被截断成short类型值的情况,例如​:65537以二进制的形式表示为000000000000010000000000001,使用%hd只会查看后面16位的情况​;

    ​插曲:

    今天晚上装上了Visual studio 2019,但是写了一个小程序,就是编译报错

    ​报错:找不到​..........exe文件,经过多方求证,搞了半天才搞对。

    我们新建一个“空项目”(不是其他的选项哦​!!)

    然后创建一个空项目之后,然后右键点击“源文件”,选择C++项目,(我们这里可以手动改成C项目,就是​后缀名直接改成.c既可),然后编辑代码,我们先要点击生成(build)-生成解决方案(build solution)之后,然后在点击直接运行就可以正常运行了,如果我们不先点击​生成解决方法,就会报错。​

    三、源码:

    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大数据学习视频礼包

     

  • 相关阅读:
    数据结构之线性顺序表ArrayList(Java实现)
    大话数据库技术之数据的检索
    JQuery表单元素过滤选择器
    字典序最小问题
    liferay中数据库表的解析未完
    转载如何实现portlet之间的传递参数
    SpringMVC学习笔记1
    深度优先搜索算法
    Ants-穷举算法
    三角形-穷举算法
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13155475.html
Copyright © 2011-2022 走看看