C for ios --- 类型说明符

原创 2017年04月05日 13:32:26

类型说明符

1.类型说明符基本概念

  • C语言提供了以下4种说明符,4个都属于关键字:
    • short 短型 等价于 short int
    • long 长型 等价于 long int
    • long long:在64位编译器下没有区别,如果在32位编译器下,long占用4个字节,longlong占用8个字节
    • signed 有符号型
    • unsigned 无符号型
  • 这些说明符一般就是用来修饰int类型的,所以在使用时可以省略int
    • long int —> long
    • long long int —> long long

输出标识符

  • c语言的特性:不看怎么存,就看怎么取
  • 用%li 或者 %ld来进行输出

+

2.short和long

  • short和long可以提供不同长度的整型数,也就是可以改变整型数的取值范围。

    • 在64bit编译器环境下,int占用4个字节(32bit),取值范围是-2^31\~2^31-1;
    • short占用2个字节(16bit),取值范围是-2^15\~2^15-1;
    • long占用8个字节(64bit),取值范围是-2^63\~2^63-1
  • 总结一下:在64位编译器环境下:

    • short占2个字节(16位)
    • int占4个字节(32位)
    • long占8个字节(64位)。
    • 因此,如果使用的整数不是很大的话,可以使用short代替int,这样的话,更节省内存开销。
  • 世界上的编译器林林总总,不同编译器环境下,int、short、long的取值范围和占用的长度又是不一样的。比如在16bit编译器环境下,long只占用4个字节。不过幸运的是,ANSI \ ISO制定了以下规则:

    • short跟int至少为16位(2字节)
    • long至少为32位(4字节)
    • short的长度不能大于int,int的长度不能大于long
    • char一定为为8位(1字节),毕竟char是我们编程能用的最小数据类型
  • 可以连续使用2个long,也就是long long。一般来说,long long的范围是不小于long的,比如在32bit编译器环境下,long long占用8个字节,long占用4个字节。不过在64bit编译器环境下,long long跟long是一样的,都占用8个字节。

    • long long int等价于long long

3.signed和unsigned

  • 首先要明确的:signed int等价于signed,unsigned int等价于unsigned

  • signed和unsigned的区别就是它们的最高位是否要当做符号位,并不会像short和long那样改变数据的长度,即所占的字节数。

    • signed:表示有符号,也就是说最高位要当做符号位,所以包括正数、负数和0。其实int的最高位本来就是符号位,已经包括了正负数和0了,因此signed和int是一样的,signed等价于signed int,也等价于int。signed的取值范围是-2^31 \~ 2^31 - 1
    • unsigned:表示无符号,也就是说最高位并不当做符号位,所 以不包括负数。在64bit编译器环境下面,int占用4个字节(32bit),因此unsigned的取值范围是:0000 0000 0000 0000 0000 0000 0000 0000 \~ 1111 1111 1111 1111 1111 1111 1111 1111,也就是0 \~ 2^32 - 1,也就是说使用unsigned修饰的变量,不把二进制的最高位作为符号位
    • 如果要打印无符号的变量,只能用%u

版权声明:感谢阅读、评论、转载

相关文章推荐

error C4430 缺少类型说明符

  • 2012年07月20日 23:25
  • 671B
  • 下载

error C4430: 缺少类型说明符 - 假定为 int....的一种情况的解决方法

这段时间用VS2013写代码的时候,一不小心就出现了这个提示,这个问题困扰了我一段时间,不过总算解决了,这里记录一下!      我这里先描述本人碰到的问题:     正如上图所见,一段在...

MFC之头文件相互包含问题及解决方法 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

问题一:error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int原因分析:1. (此情况经常出现在大型工程项目中)如果存在两个类的头文件a.h和b.h,在a.h...

error C4430: 缺少类型说明符 - 假定为 int

error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int编程语言 2010-03-30 16:20:12 阅读254 评论0 字号:大中小 c:\evan\w...

C for ios ---- c语言数据类型

什么是数据? 生活中时时刻刻都在跟数据打交道,比如体重数据、血压数据、股价数据等。在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据、图片数据、视频数据,还有聊QQ时产生的文字数据、用迅雷下...

C++11:"auto"和"decltype"类型说明符的思考

//例1//编译器:gcc 4.8.1 系统:windows#include int main() { int i = 1; auto a = i; decltype(i) d = 2; ...

匹配printf()说明符的类型

第1问题: 打印结果如下: 通常,在程序代码中使用2345这样的数字时,它以int类型存储。当使用1000000这样的数字int类型不能表示时,编译器会视为long int类型(假定这种类型可以表...

C Primer Plus学习 三十八 存储类说明符

您可能己经注意到关键字static和extern的意义随上下文而不同。C语言中有5个作为存储类说明符的关键字,它们是auto、register、static、extern以及typedef。关键字ty...

C++ auto类型说明符

编程时常常需要把表达式的值赋给变量,这就要求在声明变量的时候清楚知道表达式的类型。然而要做到这一点并非那么容易,有时候甚至根本做不到。为了解决这个问题,C++11标准引入了auto类型说明符,用它就能...
  • YhL_Leo
  • YhL_Leo
  • 2016年03月12日 14:49
  • 4431
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C for ios --- 类型说明符
举报原因:
原因补充:

(最多只允许输入30个字)