C中%hd表示的是无符号吗?

C语言有丰富的数据类型,主要有三大类:即整型数据、浮点型数据和字符型数据:
一、整型数据:
  int是最基本、最常见的整型数据,into可以满足我们大多数情况下对整型数据的要求。但某些时候整型数据并不完美,其表示范围有限,不能表示绝对值超过一定值的数据,而且其长度固定,在只需用到比较小的数值时又比较浪费(如100以内的整数),所以出了int之外,语言还提供了其他的整数类型,主要有short,long,long long。此外,为了区分有符号数和无符号数,C语言还提供了signed(有符号)和unsigned(无符号数)修饰符。其声明方法示例为:
  //常见的整型,有符号
   &()//短整型
   ()//长整型
   ()//更长的整型
  //有符号整型
  //无符号整型,最小为0
  unsigned short int//无符号的短整型,
  类型不同,其长度不同,表示范围也不同。C语言整型的表示范围很有意思,short int并不一定比int短,而是有可能和int一样长,long int也不一定比int长,而有可能和int一样长。其准确含义是,short int 不长于int,long int不短于int。有无符号只影响其表示范围,不影响长度。其字节长度的关系可表示为long long int &= long int &= int & short int 。
  若想查看每种类型具体的长度,可运行代码(单位为字节(Byte)):
printf("XXX has a size of %u.\n", sizeof(XXX));//XXX表示数据类型  
  关于C中整型的表示范围需要注意的是,C中的数据范围是一个循环,就像钟表的表盘一样,当一个数据已是其表示范围内的最大值时,对其进行+1操作有其值会变为其表示范围内最小的值。即:假设int表示范围的最大值为123455,最小值为-123456,执行如下代码:
printf("a+1 = %d\n", a+1);
printf("a+2 = %d\n", a+2);
编译执行后会输出:
此处需特别注意(以上数据是我的机器上int型数据的最大和最小值,具体可查看limits.h文件)。
  整型数据在打印时的标示符分别是:
  int--%d
  short--%hd
  long int--%ld
  unsigned int --%u
二、浮点型数据:
  C中的浮点型数据有3中类型,最基本的是float型,此外为了表示更大范围的数据和更高的精度,C还提供了double和long double型。
  与整型数据不同,浮点数据除了可用一般的123.456的形式表示外,还可用科学计数法表示,即abcedef(或abcEdef,其中不能有空格),其数值等于abc * 10的def次方。于此对应,打印浮点数时的标示符分别为:
  float--%f
  double--%f
  long double--%Lf
  这是输出一般形式,若要输出以科学表示法表示的数据,需使用%e,具体为:
  float--%e
  double--%e
  long double--%Le
三、字符型数据:
  C中的字符型数据为char,长度为固定的一个字节。char在计算机中存储的是其对应的ASCⅡ码,所以char类型的数据可以以int型输出,输出的结果为其对应的ASCerⅡ码。如:编译并运行如下代码:
char c = 'A';
printf("The code of %c is %d.\n", c, c);
将会输出:The code of A is 65.即字符A的ASCⅡ码为65。
  需要注意的是,在给char类型赋值时,一定要使用单引号,而不能使用双引号,因为如果使用双引号,会被编译器当做一个字符串而不是字符。
  char类型输出时的标示符为%c。
阅读(...) 评论()

我要回帖

更多关于 碟中谍4 hd 的文章

 

随机推荐