固定二进制位的整型变量

Posted 立体风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了固定二进制位的整型变量相关的知识,希望对你有一定的参考价值。

C99中,设置了stdint.h来定义一组整型数据类型,形如:intN_t和uintN_t对不同的N值指定N位有符号和无符号整数,N的值一般为:8,16,32,64。这样,我们就可以无歧义的声明一个16位无符号变量:uint16_t  a

如果要想用printf打印这样声明的变量,可移植的做法是,包含头文件inttypes.h(它内部包含了stdint.h),该头文件中定义了一串类似PRId32,PRId64,PRIu32,PRIu64等等的宏,根据系统的不同扩展为不同的含义。

###inttypes.h头文件片段
 42 
 43 # if __WORDSIZE == 64
 44 #  define __PRI64_PREFIX    "l"
 45 #  define __PRIPTR_PREFIX   "l"
 46 # else
 47 #  define __PRI64_PREFIX    "ll"
 48 #  define __PRIPTR_PREFIX
 49 # endif
 50 
 51 /* Macros for printing format specifiers.  */
 52 
 53 /* Decimal notation.  */
 54 # define PRId8      "d"
 55 # define PRId16     "d"
 56 # define PRId32     "d"
 57 # define PRId64     __PRI64_PREFIX "d"
 58 
101 /* Unsigned integers.  */
102 # define PRIu8      "u"
103 # define PRIu16     "u"
104 # define PRIu32     "u"
105 # define PRIu64     __PRI64_PREFIX "u"
  1 #include <stdio.h>                                                          
  2 #include <inttypes.h>
  3 int main(int argc, char *argv[])
  4 {
  5     int32_t t=10;
  6     uint64_t t1=200;
  7     printf("t=%"PRId32",t1=%"PRIu64"\n",t,t1);  //注意宏在双引号外边
  8 
  9     return 0;
 10 }

 

以上是关于固定二进制位的整型变量的主要内容,如果未能解决你的问题,请参考以下文章

C语言 如何将16进制形式的字符串,转化为相同的16进制的整型?

oracle中设置1位的整型问题

Linux GCC的整型变量和实型变量

c语言如何将字符串转为二进制的整型然后保存到整型数组里?

java基础:补充

java基础:补充