你说的那些东西在谭浩强的C语言教程里讲的非常详细
我给出一个这本书的下载地址:
http://www.namipan.com/d/%e8%b0%ad%e6%b5%a9%e5%bc%baC%e8%af%ad%e8%a8%80.7z/b0fd76d2ca48312f3270930151f4f67dec12851a17890800
此书的第3章讲解了各种数据类型,包括你说的数据类型;第4章则详细讲解了printf()的各种说明符。
以下为转载,以上为原创
------------------------------------------------------------------------------
C语言的数据类型
一、常量和变量
1、常量和变量的区别在于变量的值在后续的代码中可以修改;
2、变量的类型,C可以通过变量类型关键字(int,float等)来识别;
3、常量的类型,C通过书写来识别,比如40是int,40.00是float。
二、变量类型
2.1 C的变量类型
C的变量类型使用 变量类型关键字 表示,比如(int,float等),变量类型关键字随着C的发展有所不同。
1、最早的K & R C有7个关键字:int short long float char double unsigned(注意没有signed)
2、C90新增了2个关键字:signed和void;
3、C99有增加了3个:_Bool,_Complex,_Imaginary
2.2 C的数据类型
C的数据类型总分为4种:整型、浮点、指针和结构体
1、int是C的基本整型,其他的:short,long,signed,char都是int的变种;(各种不同类型的整型它们之间的区别在于各自的取值范围不同,以及是否可以取负数)。整型的表现形式又有10进制,8进制、16进制和2进制,但是在计算机内部都以二进制存储。
2、浮点型包括:float、double、long以及_Complex(复数)和_Imaginary(虚数)
2.3 整型和浮点型区别
1、整型和浮点型在C中的区别主要在它们各自的存储方式不一样
1.1 整型不带小数点部分,在内存中以二进制数字存储,如7,表示为0000 0111
1.2 浮点数表示稍复杂一些,将数分成小数部分和整数部分 分别存储。因此尽管7和7.00有相同的值,但是它们的存储方式完全不一样。例如3.14159在内存中分为3部分:符合 + 整数(.314159的二进制格式)+10的一次方(二进制格式)
2.4 变量的声明和初始化
1、声明一个变量:int i; 声明一个变量就是为变量开辟存储空间(创建,标定);
2、初始化语句:i=10; 初始化就是为一个变量赋值。
三、数值范围
一般情况下,long long类型为64位,long为32位,short为16位、int为16或者32位(依机器的自然字大小而定)
可以在/usr/include/limits.h中看到。
四、类型选择
1、在诸多的整数类型中,应首先考虑unsigned类型,因为我们常常不需要负数;
2、当int类型不能表示一个数而long可以时,使用long。但是long类型大于int类型的系统中,使用long类型会减慢计算,所以没必要的时候不要使用long类型。但是当long类型等于int类型的时候,当确实需要32位整数时,应使用long,以便使程序移植到16位机器上仍然可以正常工作;
3、如果需要64为整数,使用long long;
4、在int为32位的机器上,如果需要16位的值,使用short会节省空间。使用short的另一个原因是计算机中的一些硬件寄存器是16位的;
记住每种数据类型和其长度,取值范围,这些都是编程时随时都要考虑的
数据类型应该从内存说起。
所有活动的程序及数据都是在内存中保存的。
数据类型是对几个字节的约定。
比如给16byte的内存定为 long[] 那么它就是一个4维的长整数数组。
如果是char[]那么就是16维。
·数据类型是让C编译器把一块内存当作什么。
具体说来,基本的数据类型大概有两大类。 一是数字。二是数据。
数字类:char、short int、int、long int、float、double。
数据类:bool、char[]。
自定义数据类型是把一块内存按你想要的方式组合成一个定义。
如
struct Color{
unsigned char Red;
unsigned char Green;
unsigned char Blue;
};
是定义了一个三字节的自定义数据类型。可以用来表示一个颜色。
·数据类型也可以看作是类。
致 8thunit - 秀才 三级 :
在一般的机器中,使用long 往往比short和int要快。因为内存边界。
short和int也是当作long来使用的,在处理时还是要转换成long。
如果说寄存器eax = 8字节。 你同意吗?寄存器上没有问题。
不知道你用的是哪一本书,我看谭浩强的《C程序设计(第二版)》第三章。
一、基本类型
1 整型
常量与变量的区别,进制表示方法,着重10进制和2进制的转换,负数在内存中的2进制表示。基本/ 长 /短三种整型的定义及取值范围。
2 实型
实型数据在内存中的存放形式,3种变量的定义及它们的数值范围
3 字符型
字符变量与常量的区别,转义字符了解下能记最好,字符常量与字符串常量的区别。
float/ int /char 这三种数据在内存中占的字节分别是 4/ 2/ 1 .个人觉得前面三种掌握它们的定义和赋值,再在编程中注意他们的值的范围,输出的格式。
4 枚举
enum weekday{sun,mon,tue,wed,thu,fri,sat}workday ,week_end;workday 和week_end被定义为枚举变量,它们的值只能是sun 到sat 之一。
至于后面的构造类型(数组 结构体 共用体)要记的内容太多,指针更不好说,就不再一一道来。
既然是初学者就不要看 primer plus这本书,因为国外的书有个特点,就是要求你看一本书的时候必须要去查阅其他的资料,如果没有经验,可以结合国内的教材,比如唐浩强出的那本c,比较容易买
int
long int
short int
unsigned int
unsigned short int
unsigned long int
__int16
__int32
__int64
float
char
double
long double