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,枚举的更多相关文章

  1. C和C指针小记(十三)-数组

    1.1 一维数组 一维数组的声明: int a[10]; 这里a就是一个数组. 数组a的类型就是一个指向整型的常量指针. 但是数组和指针是**不相同**的. **数组具有特定数量的元素,而指针只是一个 ...

  2. 指针直接赋值为整型AND利用宏定义求结构体成员偏移量

    首先我们要更正一个很熟悉的概念,那就是指针不仅仅是“地址”,指针还有一个很重要的特性,那就是“类型”. 指针初始化时,“=”的右操作数; 除外,该语句表示指针为空): 所以 ; 这样的代码是不允许的. ...

  3. 007——转载——C#将字符串转换为整型的三种方法的总结

    (一)转载——C#将字符串转换为整型的三种方法的总结 在C#中,要将一个字符串或浮点数转换为整数,基本上有三种方法: (1)使用强制类型转换:(int)浮点数 (2)使用Convert.ToInt32 ...

  4. c语言中指向整型指针的指针的理解

    /************************************************************************* > File Name: ptr_ptr_i ...

  5. python小白入门基础(三:整型)

    # Number(int float str complex) #int 整型(正整数 0 负整数)intvar_1 = 100print(intvar_1)invar_2 = 0 print(inv ...

  6. 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串

    写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...

  7. [C和指针]第三部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. Go语言类型(布尔、整型、数组、切片、map等)

    1.基本类型 布尔类型:bool 注意:布尔类型不能接受其他类型的赋值,不支持自动或强制的类型转换. 整型:int8.byte(uint8).int16.int.uint.uintptr int.ui ...

  9. __c语言__整型、实型的存储(十进制转二进制)

    float 和 double 类型数据在内存中的存储方法 无符号整型采用32位编码,带符号整型数采用1个符号位31位底数编码: 单精度数据采用了1位符号位,8位阶码,23位尾数的编码: 双精度数据采用 ...

随机推荐

  1. SNF快速开发平台MVC-高级查询组件

    1.   高级查询 在我们做项目的时候经常想要按名称.编号进行查询数据,可在开发时会把最常用的查询条件写上,不常用的就不写了,也是因为把所有字段都写上太多了,布局不好看而且不实用.还有些查询条件几百年 ...

  2. android sdk manager 代理设置

    启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manager - Settings』窗口: 在『Andro ...

  3. 11款CSS3动画工具的开发

    本文展示了11个最好的和最令人惊异的CSS3动画工具,将为开发者是非常有帮助的.CSS3有设计师和开发人员之间的良好的声誉.它是在这里帮助他们创造惊人的结果. 有了这些动画工具,你可以创造一个轻松自由 ...

  4. [教程]-三种空格unicode(\u00A0,\u0020,\u3000)表示的区别

    1.不间断空格\u00A0,主要用在office中,让一个单词在结尾处不会换行显示,快捷键ctrl+shift+space ; 2.半角空格(英文符号)\u0020,代码中常用的; 3.全角空格(中文 ...

  5. matplotlib 学习总结

    matplotlib 学习总结 作者:csj更新时间:01.09 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 # ...

  6. 树莓派2上手 —— Raspbian的一些基本配置问题

    先说点废话: 原来的笔记本因为上次被儿子拿着充电器玩的时候漏电烧了主板,修了之后还是时不时就突然宕机,Windows也完全起不来.后面这个问题倒是不大,真要用Windows的时候拿老婆的用一下就是了, ...

  7. 聊聊Python中的is和==

    首先,Python中的is就是判断地址是否相等(相当于Java中的==),Python中的==就是判断数值是否相等(相当于Java中的equals). 看个简单的例子: a = [1, 2, 3] b ...

  8. Pwnium CTF2014 – MatterOfCombination writeup

    这道题是虽然只有75分,但是做出来的队伍却很少,我们队伍也没有做出来,这次是看到了0xAWES0ME 的解题思路后才有了这篇文章.原文地址可以点击看这里,英文的. 题目就是一张图片: 在网上可以找到这 ...

  9. Java知多少(95)绘图基础

    要在平面上显示文字和绘图,首先要确定一个平面坐标系.Java语言约定,显示屏上一个长方形区域为程序绘图区域,坐标原点(0,0)位于整个区域的左上角.一个坐标点(x,y)对应屏幕窗口中的一个像素,是整数 ...

  10. Java8学习笔记(七)--Collectors

    本系列文章翻译自@shekhargulati的java8-the-missing-tutorial 你已经学习了Stream API能够让你以声明式的方式帮助你处理集合.我们看到collect是一个将 ...