C和C指针小记(三)-整型,char,枚举
1、C语言基本数据类型-整型
仅有4中机泵数据类型:整型,浮点型,指针,聚合类型(数组和结构)
整型家族:字符,短整型,整型,长整型.(都分有符号[singed]和无符号[unsinged])
短整型,整型,长整型之间的大小规则:
长整型至少应该和整型一样长,而整型至少应该和短整型一样长.
类型 | 最小范围 |
char | 0 ~ 127 |
signed char | -127~127 |
unsigned char | 0~255 |
short int | -32767~32767 |
unsigned short int | 0 ~ 65535 |
int | -32767 ~ 32767 |
unsigned int | 0 ~ 65535 |
long int | -2147483647~2147283647 |
unsigned long int | 0~4294967295 |
也可参考limit.h 头文件,查看不同类型的特点.
2、char的有符号与无符号之分
设计char类型变量的目的是为了让它们容纳字符型值,但字符在本质上是小整型.缺省的char要么是signed char, 要么是 unsigned char,这取决于编译器.
这意味着不同机器上的char可能拥有不同范围的值.所以,只有当程序所使用的char 型变量的值位于signed char 和 unsigned char 的交集中,这个程序才是可移植的.
例如ASCII字符集中的字符都是位于这个范围之内的.
在一个把字符当作小整型值的程序中,如果显式的把这类变量声明为signed 或 unsigned,可以提高这类程序的可移植性.
这类做法可以确保不同的机器中在字符是否为有符号值方面保持一致.另一方面,有些机器在处理 signed char 时得心应手,如果硬把它改成
unsigned char ,效率可能受损,所以把所有的char 变量统一生成 signed 或 unsigned未必是上上之策.
而且,许多处理字符的库函数把他们的参数声明为char,如果你把参数显式的声明为 unsigned char 或者 signed char.可能会带来兼容性问题.
3、整型字面值
字面值(literal)这个术语是字面值常量的缩写,一种指定了自身的值并且不允许发生改变.
和普通变量极为类似,区别是字面值被初始化之后不允许修改.
当一个程序中出现字面值时,它是属于整型家族9种中的哪一种呢?答案取决于字面值是如何书写的.也可以在某些字面值后面添加一个后缀来改变缺省的规则.
如:在整数字面值后面加字符L或l,可以是这个整数被解释为long整型值,字符U或者u则用于把数值指定为 unsigned整型值.
字符常量.
他们的类型总是int.你不能在他们后面添加unsigned 或 long 后缀.字符常量就是一个用单引号包围起来的单个字符(字符转义序列或三字母词).
如:'M' '\n' '??)' '\337'
C标准也允许诸如'abc'这类的多子节字符常量,但它们的实现在不同的环境中可能不一样,所以不鼓励使用.
如果一个多字节字符常量的前面有一个L,那么它就是宽字符常量(wide character literal)
如: L'X' L'e^'
当运行时环境支持一种宽字符集时,就可能使用他们.
注意:
整型字面值的书写形式有很多,但是对编译器来讲都一样.
如何把一个字符转换为二进制值: value = value - '0';
枚举类型:
枚举(enumerated)类型就是指它的值为符号常量而不是字面值的类型.他们以下面这种形式声明:
enmu Jar_Type{ CUP, PINT, QUART, HALF_GALLON, GALLON };
这样就声明来一个枚举类型,称为Jar_Type.
声明该类型的变量方式:
enmu Jar_Type milk_jug, gas_can, medicine_bottle;
如果某种特别的枚举类型的变量只是用一个声明,你可以把上面两条语句组合成:
enum { CPU, PINT, QUART, HALF_GALLON, GALLON } milk_jug, gas_can, medicine_bottle;
这种类型的变量是以整型的方式存储的,这些符号名的实际值都是整型值.
如CPU是0, PINT是1,以此类推.
当然也可以为这些符号指定特定的值,
enum { CPU = , PINT = , QUART = , HALF_GALLON = , GALLON = };
C和C指针小记(三)-整型,char,枚举的更多相关文章
- C和C指针小记(十三)-数组
1.1 一维数组 一维数组的声明: int a[10]; 这里a就是一个数组. 数组a的类型就是一个指向整型的常量指针. 但是数组和指针是**不相同**的. **数组具有特定数量的元素,而指针只是一个 ...
- 指针直接赋值为整型AND利用宏定义求结构体成员偏移量
首先我们要更正一个很熟悉的概念,那就是指针不仅仅是“地址”,指针还有一个很重要的特性,那就是“类型”. 指针初始化时,“=”的右操作数; 除外,该语句表示指针为空): 所以 ; 这样的代码是不允许的. ...
- 007——转载——C#将字符串转换为整型的三种方法的总结
(一)转载——C#将字符串转换为整型的三种方法的总结 在C#中,要将一个字符串或浮点数转换为整数,基本上有三种方法: (1)使用强制类型转换:(int)浮点数 (2)使用Convert.ToInt32 ...
- c语言中指向整型指针的指针的理解
/************************************************************************* > File Name: ptr_ptr_i ...
- python小白入门基础(三:整型)
# Number(int float str complex) #int 整型(正整数 0 负整数)intvar_1 = 100print(intvar_1)invar_2 = 0 print(inv ...
- 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...
- [C和指针]第三部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Go语言类型(布尔、整型、数组、切片、map等)
1.基本类型 布尔类型:bool 注意:布尔类型不能接受其他类型的赋值,不支持自动或强制的类型转换. 整型:int8.byte(uint8).int16.int.uint.uintptr int.ui ...
- __c语言__整型、实型的存储(十进制转二进制)
float 和 double 类型数据在内存中的存储方法 无符号整型采用32位编码,带符号整型数采用1个符号位31位底数编码: 单精度数据采用了1位符号位,8位阶码,23位尾数的编码: 双精度数据采用 ...
随机推荐
- linux备份数据mysql
到mysql安装目录下的bin: ./mysqldump -u root -p ebuy_mgt > /home/2017backup.sql
- HTML5手机页面里面如何把长按复制避免
在写HTML5手机页面的时候,有时候会写到一些标签是需要用户长按然后放开的 但是微信里面长按就会出现复制,大大影响了用户体验,那么如何可以避免呢? 我也是最近写到这样的页面,总结了一部分,大家可以作为 ...
- Socketserver 笔记
引入Socketserver的背景: 我们之前使用socket编程的时候,Server端创建一个连接循环(建立连接)+一个通信循环(基于一次连接建立通信循环),(这里的黏包问题我们的实现方式是:我们在 ...
- linux 重启和关机
重启命令有:reboot, shutdown -ry 0关机命令有:poweroff, shutdown -hy 0
- samba需求,请建一个目录,所有用户都可以修改其中的任意文件(新建文件的权限问题)
我的配置如下: [TMP] comment = Public Stuff path = /DATA/samba/tmp public = yes writable = yes create mode ...
- [转]理解下DMA/NorFlash/DDR下的Burst是个什么概念
DMA传送不经过CPU的控制,假如硬盘的数据不能经过DMA控制器读到内存,那么每完成一次将硬盘的数据读出来,再存放到内存的操作,都要通过CPU运行几条读写指令来完成,这时CPU就做不了别的事了,如果有 ...
- Java知多少(93)鼠标事件
鼠标事件的事件源往往与容器相关,当鼠标进入容器.离开容器,或者在容器中单击鼠标.拖动鼠标时都会发生鼠标事件.java语言为处理鼠标事件提供两个接口:MouseListener,MouseMotionL ...
- (原)阅读Android-Camera2Video的demo源码和调试心得
转载请注明出处:http://www.cnblogs.com/lihaiping/p/6142512.html 最近因为项目需要使用到camera的功能,所以针对官方的demo源码进行一番阅读,并 ...
- Scala学习笔记——类型
1.Option类型 Option类型可以有两种类型,一种是Some(x),一种是None对象 比如Scala的Map的get方法发现了指定键,返回Some(x),没有发现,返回None对象 2.列表 ...
- Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'问题解决方法
Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'问题解决方法 关于dubbo服务的 ...