c/c++语言开发共享关于C中短数据类型格式说明符的混淆

考虑以下计划:

#include  int main() { short a=9; //printf("%hin",a); printf("%d",a); // LINE 6 } 

根据这个 ,短类型(签名)的格式说明符是%hi 短行型变量是否总是在对它执行任何操作之前自动提升为int ? 它是未定义的行为,如果我使用%d格式说明符来打印此程序中的变量值? 我使用gcc -Wall -Wextra -WFormat选项编译它,但仍然编译器没有显示任何单个警告。 为什么?

     printf("%hin", a); 

    根据可变参数函数的默认参数提升规则将a提升为int

    无论如何,当您使用h说明符时,允许实现期望int值在SHRT_MINSHRT_MAX限制内。 将值传递到边界之外是未定义的行为。

    当然是printf("%in", a); 因为使用%hi转换规范的int促销也是有效的并不常见。

      以上就是c/c++开发分享关于C中短数据类型格式说明符的混淆相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/559603.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐