软件开发和网站开发区别,做网站的优势,安仁做网站,唐山 建设工程信息网站3.1 C语言的数据类型#xff08;理解#xff09; 首先#xff0c;对变量的定义可以包括三个方面#xff1a;
数据类型
存储类型
作用域
所谓数据类型是按被定义变量的性质#xff0c;表示形式#xff0c;占据存储空间的多少#xff0c;构造特点来划分的。在C语言中理解 首先对变量的定义可以包括三个方面
数据类型
存储类型
作用域
所谓数据类型是按被定义变量的性质表示形式占据存储空间的多少构造特点来划分的。在C语言中数据类型可分为基本数据类型构造数据类型指针类型空类型四大类。
熟记下面这个导图即可 1.基本数据类型基本数据类型最重要的特点是其值不可以再分解为其它类型。也就是说基本数据类型是自我说明的。
2.构造数据类型构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。在C语言中构造类型有以下几种
数组类型
结构体类型
共用体联合类型
3.指针类型指针是一种特殊的同时又是具有重要作用的数据类型。其值用来表示某个变量在内存存储器中的地址。虽然指针变量的取值类似于整型量但这是两个类型完全不同的量因此不能混为一谈。
4.空类型在调用函数值时通常应向调用者返回一个函数值。这个返回的函数值是具有一定的数据类型的应在函数定义及函数说明中给以说明例如在例题中给出的max函数定义中函数头为int max(int a,int b);其中“int”类型说明符即表示该函数的返回值为整型量。又如在例题中使用了库函数sin由于系统规定其函数返回值为双精度浮点型因此在赋值语句ssin(x)中s也必须是双精度浮点型以便与sin函数的返回值一致。所以在说明部分把s说明为双精度浮点型。但是也有一类函数调用后并不需要向调用者返回函数值这种函数可以定义为“空类型”。其类型说明符为void。在后面函数中还要详细介绍。
3.2 常量与变量理解 对于基本数据类型量按其取值是否可改变又分为常量和变量两种。在程序执行过程中其值不发生改变的量称为常量其值可变的量称为变量。它们可与数据类型结合起来分类。例如可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。在程序中常量是可以不经说明而直接引用的而变量则必须先定义后使用。 整型量包括整型常量、整型变量。 3.2.1 常量和符号变量
在程序执行过程中其值不发生改变的量称为常量。
直接常量字面常量
整型常量120-4
实型常量4.6、-1.23
字符常量‘a’、b。
标识符用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。
符号常量用标示符代表一个常量。在c语言中可以用一个标识符来表示一个常量称之为符号常量。
符号常量在使用之前必须先定义其一般形式为
#define 标识符 常量
其中#define也是一条预处理命令预处理命令都以“#”开头称为宏定义命令在后面预处理程序中将进一步介绍其功能是把该标识符定义为其后的常量值。一经定义以后在程序中所有出现该标识符的地方均代之以该常量值。
习惯上符号常量的标识符用大写字母变量标识符用小写字母以示区别。
#includestdio.h
#define PRICE 30
int main()
{int num,total;num 10;total num * PRICE;printf(total %d,total);return 0;
} 用标识符代表一个常量称为符号常量。
符号常量与变量不同它的值在其作用域内不能改变也不能再被赋值。
使用符号常量的好处是
含义清楚
能做到“一改全改”。
常量导图如图所示 3.2.2 变量
其值可以改变的量称为变量。一个变量应该有一个名字在内存中占据一定的存储单元。变量定义必须放在变量使用之前。一般放在函数体的开头部分。要区分变量名和变量值是两个不同的概念。 3.3 整型数据掌握
3.3.1 整型常量的表示方法必考点
学习提示
掌握八进制、十六进制、十进制合法表示。要一眼看出来这个数是不是合法表示是八进制还是十六进制还是十进制。
掌握八进制、十六进制、十进制以及二进制的相互转换。
整型常量就是整常数。在c语言中使用的整常数有八进制、十六进制和十进制三种。
十进制整常数十进制整常数没有前缀。其数码为0~9。 以下是合法的十进制整常数 230-451265535、1258 以下各数不是合法的十进制整常数 023不能有前导0、23D(含有非十进制数码)。 在程序中是根据前缀来区分各种进制数的。因此在书写常数时不要把前缀弄错造成结果不正确。 八进制整常数八进制整常数必须以0开头即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。 以下各数是合法的八进制数 015十进制为13、0101十进制为65、0177777十进制为65535 以下各数不是合法的八进制数 256无前缀0、03A2包含了非八进制数码A、-0124(出现了负号)。 十六进制整常数十六进制整常数的前缀为0X或0x。其数码取值为0~9A~F或a~f。 以下各数是合法的十六进制整常数 0X2A(十进制为42)、0XA0(十进制为160)、0XFFFF(十进制为65535) 以下各数不是合法的十六进制整常数 5A(无前缀0X)、0X3H(含有非十六进制数码)。 整型常数的后缀在16位字长的机器上基本整型的长度也为16位因此表示的数的范围也是有限定的。十进制无符号整常数的范围为0~65535有符号数为-32768~32767。八进制无符号数的表示范围为0~0177777。十六进制无符号数的表示范围为0X0~0XFFFF或0x0~0xFFFF。如果使用的数超过了上述范围就必须用长整型数来表示。长整型数是用后缀“L”或“I”来表示的。 例如 十进制长整常数 158L(十进制为158)、358000L(十进制为358000) 八进制长整常数 012L(十进制为10)、077L(十进制为63)、0200000L(十进制为65536) 十六进制长整常数 0X15L(十进制为21)、0XA5L(十进制为165)、0X10000L(十进制为65536) 长整数158L和基本整常数158在数值上并无区别。但对158L因为是长整型量C编译系统将它分配4个字节存储空间。而对158,因为是基本整型只分配2个字节的存储空间。因此在运算和输出格式上要予以注意避免出错。 无符号数也可用后缀表示整型常数的无符号数的后缀为“U”或“u”。
例如
358u,0x38Au,235Lu均为无符号数。
前缀后缀可同时使用以表示各种类型的数。如0XA5Lu表示十六进制无符号长整数A5其十进制为165。
3.3.2 整型变量理解
1.整型数据在内存中的存放形式了解
定义了一个整型变量i:
int i;
i 10;
提示任何数据的存放都是二进制形式
原码补码相关概念大家可以去搜一下初学者了解即可。
本来是有图的但太麻烦了我就没弄大家自行理解哈。
数值是以补码表示的
1正数的补码和原码相同
2负数的补码将该数的绝对值的二进制形式按位取反再加1。
2.整型变量的分类理解
以下数据类型的字节数与计算机系统有关。16位、32位或者64位系统int ,long等类型的字节数可能不同。
如果感兴趣可以自行编程计算手机环境中各类型的字节数。int a;sizeof(a)即可求出int类型的字节数。其他类型类似。 1基本型类型说明符为int在内存中占2个字节。 2短整量类型说明符为short int或short。所占字节和取值范围均与基本型相同。 3长整型类型说明符为long int 或long,在内存中占4个字节。 4无符号型类型说明符为unsigned。 无符号型又可与上述三种类型匹配而构成 1无符号基本型类型说明符为unsigned int或unsigned。 2无符号短整型类型说明符为unsigned short。 3无符号长整型类型说明符为unsigned long。 各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位故不能表示负数。 3.整型变量的定义理解
变量定义的一般形式为
类型说明符 变量名标识符变量名标识符。。。
例如
int a,b,c;(a,b,c为整型变量)
long x,y;(x,y为长整型变量)
unsigned p,q;(p,q为无符号整型变量)
在书写变量定义时应注意以下几点、
允许在一个类型说明符后定义多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。
最后一个变量名之后必须以“”号结尾。
变量定义必须放在变量使用之前。一般放在函数体的开头部分。
例3.2整型变量的定义与使用。
#include stdio.hint main()
{int a,b,c,d;unsigned u;a 12;b -24;u 10;c a u;d b u;printf(a u %d,b u %d\n,c,d);return 0;
}
运行结果 4.整型数据的溢出 例3.3 整型数据的溢出。 #include stdio.hint main()
{int a,b;// 整数最大值16位时为3276732位是214748364764位9223372036854775807。// 所以此题运行结果与编译器环境有关a 2147483647;b a1;printf(%d,%d\n,a,b);return 0;
} 编译结果 可看出我使用的这个在线编译器是32位的 例3.4 类型自动转换
#include stdio.hint main()
{long x,y;int a,b,c,d;x 5;y 6;a 7;b 8;c xa;d yb;printf(cxa%d,dyb%d\n,c,d);return 0;
} 运行结果 从程序中可以看到x,y是长整型变量a,b是基本整型变量。它们之间允许进行运算运算结果为长整型。但c,d被定义为基本整型因此最后结果为基本整型。本例说明不同类型的量可以参与运算并相互赋值。其中的类型转换是由编译系统自动完成的。有关类型转换的规则将在以后介绍。
3.4 实型数据
3.4.1 实型常量的表示方法掌握
实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中实数只采用十进制。它有两种形式十进制小数形式指数形式。
1十进制数形式由数码0~9和小数点组成。
例如
0.0、25.0、5.789、0.13、5.0、300、-267.8230
等均为合法的实数。注意必须有小数点。
2指数形式考点由十进制数加阶码标志“e”或“E”以及阶码只能为整数可以带符号组成。
其一般形式为
a E n (a为十进制数n为十进制整数)
其值为a*10^n(10^n意思为10的n次方以下相同)。
如
2.1E5(等于2.1*10^5)
3.7E-2等于3.7*10^-2
0.5E7(等于0.5*10^7)
-2.8E-2(等于-2.8*10-2)
以下不是合法的实数
345无小数点
E7(阶码标志E之前无数字)
-5无阶码标志
53.-E3(负号位置不对)
2.7E(无阶码)
标准C允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如356f和356.是等价的。
例3.5说明了这种情况。
#include stdio.hint main()
{printf(%f\n,356.);printf(%f\n,356);printf(%f\n,356f);return 0;
}
我在编译网站上编译这个的时候发现报错了 网上找的答案可能这个网站不是标准C吧不允许这样用有了解的朋友可以在评论区回答一下 3.4.2实型变量
1.实型数据在内存中的存放形式了解
实型数据一般占4个字节32位内存空间。按指数形式存储。
2.实型变量的分类掌握
实型变量分为单精度float型、双精度double型和长双精度long double型三类。
在Turbo C中单精度型占4个字节32位内存空间其数值范围为3.4E-38~3.4E38只能提供七E位有效数字。双精度型占8个字节64位内存空间其数值范围为1.7E-308~1.7E308,可提供16位有效数字。
实型变量定义的格式和书写规则与整型相同。
例如
float x,y;(x,y为单精度实型量)
double a,b,c;(a,b,c为双精度实型量)
3.实型数据的舍入误差理解
由于实型变量是由有限的存储单元组成的因此能提供的有效数字总是有限的。如下例。
例3.6实型数据的舍入误差。
#include stdio.hint main()
{float a,b;a 123456.789e5;b a 20;printf(%f\n,a);printf(%f\n,b);return 0;
}
运行结果 注意1.0/3*3的结果并不等于1.
#include stdio.hint main()
{float a;double b;a 33333.33333;b 33333.33333333333333;printf(%f\n%f\n,a,b);return 0;
} 运行结果 从本例可以看出由于a是单精度浮点型有效位数只有七位。而整数已占五位故小数二位后之后均为无效数字。
b是双精度型有效位为十六位。但Turbo C规定小数后最多保留六位其余部分四舍五入。 3.4.3 实型常数的类型
实型常数不分单、双精度都按双精度double型处理。 将近半个小时整理了1/3剩下的明天下午整理完全预估两个小时。晚安