C Primer Plus 第三章 数据和C 阅读笔记
第3章 数据和C
- 3.1 示例程序
- 3.1.1 程序中的新元素
- 3.2 变量与常量数据
- 3.3 数据:数据类型关键字
- 3.4 C语言基本数据类型
- 3.4.1 int类型
- 3.4.2 其他整数类型
- 3.4.3 使用字符:char 类型
- 3.4.4 _Bool 类型
- 3.4.5 可移植类型:stdint.h和inttypes.h
- 3.4.6 float、double和long double
- 3.4.7 复数和虚数类型
- 3.4.8 其他类型
- 3.4.9 类型大小
- 3.5 使用数据类型
- 3.6 参数和陷阱
- 3.7 转义序列示例
3.1 示例程序
platinum.c程序:
//platinum.c -- your weight in platinum
#include <stdio.h>int main(void)
{float weight; //你的体重float value; //相等重量的白金价值 printf("Are you worth your weight in platinum?\n");printf("Let's check it out.\n");printf("Please enter your weight in pounds: ");scanf("%f", &weight); //获取用户的输入value = 1700.0 * weight * 14.5833; //假设白金的价格是每盎司$1700,14.5833用于把英镑常衡盎司转换为金衡盎司 printf("Your weight in platinum is worth $%.2f.\n", value);printf("You are easily worth that! If platinum prices drop,\n");printf("eat more to maintain your value.\n");return 0;
}
运行结果:
提示:
错误:表明程序中有错,不能进行编译。
警告:表明尽管编写的代码有效,但可能不是程序员想要的。警告并不终止编译。
3.1.1 程序中的新元素
- 新的变量声明。float类型可以存储带小数的数字。
- 程序中演示了常量的几种新写法。现在可以使用带小数点的数了。
- 在printf()中使用%f来处理浮点值。%.2f中的.2指定输出的浮点数只显示小数点后面两位。
- scanf()函数用于读取键盘输入。%f说明scanf()要读取用户从键盘输入的浮点数。&weight告诉scanf()把输入的值赋给名为weight的变量。使用&符号表明找到weight变量的地址。
- scanf()读取用户输入的数据,并把数据传递给程序;printf()读取程序中的数据,并把数据显示在屏幕上。
3.2 变量与常量数据
- 常量:在程序使用之前已经预先设定好了,在整个程序的运行过程中没有变化。
- 变量:在程序运行期间可能会改变或被赋值。
3.3 数据:数据类型关键字
按计算机的储存方式可分为两大基本类型:整数类型和浮点数类型。
- 整数
计算机以二进制数字储存整数。例如,整数7转化为二进制为111.因此,要在8位字节中储存该数字,需要把前5位都设置成0,后三位设置为1。如下图所示:
- 浮点数
注意,在一个值后面加上一个小数点,该值就成为一个浮点值。所以,7是整数,7.00是浮点数。3.16E7表示3.16×10^7,7被称为10的指数。
计算机把浮点数分成小数部分和指数部分来表示,而且分开储存这两部分。7.00和7在数值上相同,但是它们的储存方式不同。如下图所示:
整数和浮点数这两种类型的实际区别:
1. 整数没有小数部分,浮点数有小数部分。
2. 浮点数表示的范围比整数大。
3. 对于一些算术运算,浮点数损失的精度更多。
4. 浮点数不能表示区间内所有的值。浮点数通常只是实际值的近似值。
5. 浮点运算比整数慢。
3.4 C语言基本数据类型
3.4.1 int类型
- 声明int变量
int类型是有符号整型。
int erns; int hogs; int cows; int goats; 和int erns, hogs, cows, goats;的效果相同,都为4个int大小的变量赋予名称并分配内存空间。 - 初始化变量
变量如何获值?有三种途径:
- 第一种:赋值
- 第二种:通过函数(如,scanf())获得值
- 第三种:初始化变量
初始化变量就是为变量赋一个初始值。
最好不要把初始化的变量和未初始化的变量放在同一条声明中。
声明为变量创建和标记存储空间,并为其指定初始值,如下图所示:
- int类型常量
C语言把不含小数点和指数的数作为整数。大多数整型常量视为int类型,但是非常大的整数除外。 - 打印int值
print1.c程序:
/* print1.c - 演示printf()的一些特性*/
#include <stdio.h>
int main(void)
{int ten = 10;int two = 2;printf("Doing it right: ");printf("%d minus %d is %d\n", ten, 2, ten - two);printf("Doing it wrong: ");printf("%d minus %d is %d\n", ten); //遗漏2个参数return 0;
}
运行结果:
在第二行输出中,由于没有给后两个%d提供任何值,所以打印出的值是内存中的任意值(不同计算机输出结果不同,因为内存中存储的数据不同,而且编译器管理内存的位置也不同)。
使用printf()函数时,要确保转换说明的数量与待打印值的数量相等。
八进制和十六进制
十六进制的每一位的数恰好由4位二进制数表示。例如,十六进制数3的二进制数是0011。在C语言中,用特定的前缀表示使用哪种进制。0x或0X前缀表示十六进制值。例如,十进制数16表示成十六进制是0x10或0X10。0前缀表示八进制。例如,十进制数16表示成八进制是020。
无论把数字写成16、020或0x10,储存该数的方式都相同,因为计算机内部都以二进制进行编码。显示八进制和十六进制
既可以使用,也可以显示不同进制的数。不同的进制要使用不同的转换说明。
十进制,使用%d。八进制,使用%o。十六进制,使用%x。
要显示各进制数的前缀0、0x和0X,必须分别使用%#o、%#x、%#X。
bases.c程序:该程序以3种不同记数系统显示同一个值。printf()函数做了相应的转换。
/*bases.c--以十进制、八进制、十六进制打印十进制数100*/
#include <stdio.h>int main(void){int x = 100;printf("dec = %d; octal = %o; hex = %x\n", x, x, x);printf("dec = %d; octal = %#o; hex = %#x\n", x, x, x);return 0;
}
运行结果:
3.4.2 其他整数类型
C语言提供3个附属关键字修饰基本数据类型:short、long和unsigned。
- short int(简写为short)
占用的存储空间可能比int类型少,常用于较小数值的场合以节省空间。与int类似,short是有符号类型。 - long int 或 long
占用的存储空间可能比int类型多,适用于较大数值的场合。与int类似,long是有符号类型。 - long long int 或 long long
占用的存储空间可能比long类型多,适用于更大数值的场合。该类型至少占64位。与int类似,long long是有符号类型。 - unsigned int 或 unsigned
只用于非负值的场合。这种类型与有符号类型表示的范围不同。例如,16位unsigned int允许的取值范围是0 ~ 65535,而不是-32768 ~ 32767。用于表示正负号的位现在用于表示另一个二进制位,所以无符号整数可以表示更大的数。 - 在C90标准中,添加了unsigned long int 或 unsigned long 或 unsigned short int 或 unsigned short 类型。C99标准又添加了unsigned long long int 或 unsigned long long。
- 在任何有符号类型前面添加关键字signed,可强调使用有符号类型的意图。例如,short、short int、signed short、signed short int 都表示同一种类型。
1. 使用多种整数类型的原因
为什么说short类型“可能”比int类型占用的空间少,long类型“可能”比int类型占用的空间多?因为C语言只规定了short占用的存储空间不能多于int,long占用的存储空间不能少于int。这样规定是为了适应不同的机器。
现在,个人计算机上最常见的设置是,long long占64位,long占32位,short占16位,int占16位或32位(依计算机的自然字长而定)。
C标准对基本数据类型只规定了允许的最小大小。
int类型这么多,该如何选择?首先,考虑unsigned类型。这种类型的数常用于计数,因为计数不用负数。而且,unsigned类型可以表示更大的整数。
通常,只有当程序使用相对于系统可用内存较大的整型数组时,才需要重点考虑节省空间的问题。
2. long 常量 和 long long 常量
在值的末尾加上 l 或 L 后缀,表示 long 类型。
ll 或 LL 后缀,表示 long long 类型的值。如,0x10L
u 或 U 后缀,表示 unsigned long long的值。如,5ull、10LLU
3. 整数溢出
如果整数超出了相应类型的取值范围会怎样?下面分别将有符号类型和无符号类型的整数设置为比最大值略大,看看会发生什么(printf()函数使用%u说明显示 unsigned int 类型的值)
toobig.c程序:
/* toobig.c -- 超出系统允许的最大int值 */
#include <stdio.h>int main(void)
{int i = 2147483647;unsigned int j = 4294967295;printf("%d %d %d\n", i, i+1, i+2); printf("%u %u %u\n", j, j+1, j+2);return 0;
}
运行结果:
程序分析:无符号整数,当达到它能表示的最大值时,会重新从起始点(0)开始。
溢出行为是未定义的行为,C标准并未定义有符号类型的溢出规则。
注意:当有符号类型超出(溢出)其所能表示的最大值时,系统并未通知用户。因此,在编程时必须自己注意这类问题。
4. 打印 short 、long 、long long和 unsigned类型
打印 unsigned int 类型的值,使用%u转换说明。
打印 long 类型的值,使用 %ld 转换说明。
打印十六进制格式的 long 类型整数,使用 %lx 转换说明。
打印八进制格式的 long 类型整数,使用 %lo 转换说明。
注意,虽然C允许使用大写或小写的常量后缀,但是在转换说明中只能用小写。
short 类型,可以使用 h 前缀。
%hd表示以十进制显示 short 类型的整数。
%ho表示以八进制显示 short 类型的整数。
h 和 l 前缀都可以和 u 一起使用,用于表示无符号类型。例如,%lu 表示 unsigned long 类型的值。
%lld 表示 有符号 long long 类型的整数。
%llu 表示 无符号 long long 类型的整数。
print2.c程序:
/* print2.c -- 更多printf()的特性 */
#include <stdio.h>int main(void)
{unsigned int un = 3000000000; /* int为32位和 short为16位的系统 */short end = 200;long big = 65537;long long verybig = 12345678908642;printf("un = %u and not %d\n", un, un);printf("end = %hd and not %d\n", end, end);printf("big = %ld and not %hd\n", big, big); printf("verybig = %lld and not %ld\n", verybig, verybig); return 0;
}
运行结果:
程序分析:
第一行输出,对于无符号变量un,使用 %d 会产生负值。其原因是,无符号值3000000000和有符号值-129496296在系统内存中的内部表示完全相同。因此,如果告诉printf()该数是无符号数,它打印一个值;如果告诉它该数是有符号数,它将打印另一个值。在待打印的值大于有符号值的最大值,会发生这种情况。对于较小的正数(如96),有符号和无符号类型的存储、显示都相同。
第二行输出,对于 short 类型的变量end,在printf()中无论指定以 short 类型(%hd)还是 int 类型(%d)打印,打印出来的值都相同。这是因为在给函数传递参数时,C编译器把 short 类型的值自动转换成 int 类型的值。为什么要进行转换?h修饰符有什么?第1个问题的答案是,int 类型被认为是计算机处理整数类型时最高效的类型。因此,在 short 和 int 类型的大小不同的计算机中,用 int 类型的参数传递速度更快。第2个问题的答案是,使用 h 修饰符可以显示较大整数被截断成 short 类型值的情况。
第三行输出就演示了这种情况。把 65537 以二进制格式写成一个 32 位数是00000000000000010000000000000001。使用%hd,printf() 只会查看后16位,所以显示的值是1。与此类似,输出的最后一行先显示了verybig的完整值,然后由于使用了%ld,printf()只会查看后16位,所以显示的值是1。与此类似,输出的最后一行先显示了 verybig 的完整值,然后由于使用了%ld,printf() 只显示了储存在后32位的值。
3.4.3 使用字符:char 类型
char 类型用于储存字符,但是从技术层面看,char 是整数类型。因为 char 类型实际上储存的是整数而不是字符。计算机使用数字编码来处理字符。美国最常用的编码是ASCII编码。
标准ASCII码的范围是0 ~ 127,只需 7 位二进制数即可表示。通常 char 类型被定义为8位的存储单元,因此容纳标准ASCII码绰绰有余。
许多字符集都超过了127,甚至多于225。例如,商用的统一码(Unicode)创建了一个能表示世界范围内多种字符集的系统。国际标准化组织(ISO)和国际电工技术委员会(IEC)为字符集开发了ISO/IEC 10646标准。统一码标准也与ISO/IEC 10646标准兼容。
char类型占用的位数为1字节。
- 声明 char 类型变量
char response; - 字符常量和初始化
char grade = ‘A’;
用单引号括起来的单个字符被称为字符常量。编译器一发现’A’,就会将其转化成相应的代码值。
字符是以数值形式储存的,所以也可以使用数字代码值来赋值。
char grade = 65; /* 这样做的前提是系统使用ASCII码,这是一种不好的编程风格,最好用 ‘A’ 代替65,这样在任何系统中都不会出问题*/
C语言将字符常量视为 int 类型而非 char 类型。例如,在 int 为32位、char 为8位的ASCII系统中,有下面的代码:
char grade = ‘B’;
本来’B’对应的数值66储存在32位的存储单元中,现在却可以储存在8位的存储单元中(grade)。利用字符常量的这种特性,可以定义一个字符常量’FATE’,即把4个独立的8位ASCII码储存在一个32位存储单元中。如果把这样的字符常量赋给 char 类型变量grade,只有最后8位有效。因此,grade的值是’E’。 - 非打印字符
有些ASCII字符打印不出来。例如,一些代表行为的字符(如,退格、换行、蜂鸣)。表示这些字符的方法,如下所示。
第一种方法:使用ASCII码。例如,蜂鸣字符的ASCII值是7,因此可以这样写:char beep = 7;
第二种方法:使用转义序列。把转义序列赋给字符变量时,必须用单引号把转义序列括起来。如,char nerf = ‘\n’;
- 打印字符
charcode.c程序:演示打印char类型变量的两种方式
/* charcode.c - 显示字符的代码编号*/
#include <stdio.h>int main(void)
{char ch;printf("Please enter a character.\n");scanf("%c",&ch); /* 用户输入字符 */printf("The code for %c is %d.\n",ch,ch);return 0;
}
运行结果:
程序分析:
%c对应打印一个字符,%d对应打印一个十进制整数值。注意,转换说明决定了数据的显示方式,而不是数据的储存方式。
5.有符号还是无符号
signed char 表示有符号类型,可表示范围为-128 ~ 127。unsigned char表示无符号类型,可表示范围为0 ~ 225。这在用char类型处理小整数时很有用。如果只用char处理字符,那么char前面无需使用任何修饰符。
3.4.4 _Bool 类型
用于表示布尔值,即逻辑值true(用1表示)和false(用0表示)。_Bool类型也是一种整数类型。但原则上它仅占用1位存储空间。
程序通过布尔值可选择执行哪部分代码。
3.4.5 可移植类型:stdint.h和inttypes.h
C语言提供了许多有用的整数类型。但是,某些类型名在不同系统中的功能不一样。C99新增了两个头文件stdint.h和inttypes.h,以确保C语言的类型在各系统中的功能相同.
C语言为现有类型创建了更多类型名。这些新的类型名定义在stdint.h头文件中。
精确宽度整数类型。例如,int32_t表示32位的有符号整数类型。在使用32位int的系统中,头文件会把int32_t作为int的别名。
最小宽度类型。一些类型名保证所表示的类型一定是至少有指定宽度的最小整数类型。例如,int_least8_t是可容纳8位有符号整数值的类型中宽度最小的类型的一个别名。
最快最小宽度类型。例如,int_fast8_t 被定义为系统中对8位有符号值而言运算最快的整数类型的别名。
C99定义了最大的有符号整数类型 intmax_t,最大的无符号整数类型uintmax_t。
C99和C11不仅提供可移植的类型名,还提供相应的输入和输出。例如, printf()打印特定类型时要求与相应的转换说明匹配。如果要打印int32_t类型的值,有些定义使用d,而有些定义使用%ld,C标准针对这一情况,提供了一些字符串宏来显示可移植类型。例如,inttypes.h头文件中定义了PRId32字符串宏,代表打印32位有符号值的合适转换说明(如d或l)。
altnames.c程序:可移植类型和相应转换说明的用法
/* altnames.c -- 可移植整数类型名 */
#include <stdio.h>
#include <inttypes.h> //支持可移植类型
int main(void)
{int32_t me32; // me32是一个32位有符号整型变量me32 = 45933945;printf("First, assume int32_t is int: ");printf("me32 = %d\n", me32);printf("Next, let's not make any assumptions.\n");printf("Instead, use a \"macro \" from inttypes.h: ");printf("me32 = %" PRId32 "\n", me32);return 0;
}
运行结果:
程序分析:
该程序最后一个printf()中,参数PRId32被定义在inttypes.h中的"d"替换,因而这条语句等价于printf(“me32 = %d\n”, me32);
3.4.6 float、double和long double
浮点类型能表示包括小数在内更大范围的数。
指数记数法,是科学记数法在计算机中的写法,e后面的数字代表10的指数。
第1种浮点类型:float,必须至少能表示6位有效数字,且取值范围至少是10^-37 ~ 10^+37。前一项规定指float类型必须能够表示33.333333的前6位数字,而不是精确到小数点后6位数字。系统储存一个浮点数要占用32位,其中8位用于表示指数的值和符号。剩下24位用于表示非指数部分及其符号。
第2种浮点类型:double,和float类型的最小取值范围相同。double类型的值至少有13位有效数字。
第3种浮点类型:long double,以满足比 double类型更高的精度要求。
- 声明浮点类型变量
float noah;
double trouble;
long double gnp; - 浮点型常量
基本形式:有符号的数字(包括小数点),后面紧跟e或E,最后是一个有符号数表示10的指数。例如,-1.56E+12。
正号可以省略。可以没有小数点(如,2E5)或指数部分(如,19.28),但是不能同时省略两者。可以省略小数部分(如,3.E16)或整数部分(如,.45E-6),但是不能同时省略两者。不要在浮点型常量中间加空格。
默认情况下,编译器假定浮点型常量是double类型的精度。在浮点数后面加上后缀可覆盖默认设置。
C99添加了一种新的浮点型常量格式——用十六进制表示浮点型常量,即在十六进制数前加上十六进制前缀(0x或0X),用p和P分别代替e和E,用2的幂代替10的幂(即,p计数法)。如下所示:
0xa.1fp10
十六进制a等于十进制10,.1f是1/16加上151/161/16,p10是2^10。0xa.1fp10表示的值是(10 + 1/16 + 151/161/16)*1024(即,十进制10364.0)。 - 打印浮点值
%f 打印十进制记数法的float和double类型浮点数
%e 打印指数记数法的浮点数
%Lf、%Le、%La打印 long double类型
showf_pt.c程序:
/* showf_pt.c -- 以两种方式显示float类型的值 */
#include <stdio.h>int main(void)
{float about = 32000.0;double abet = 2.14e9;long double dip = 5.32e-5;printf("%f can be written %e\n", about, about);//下一行要求编译器支持C99或其中的相关特性printf("And it's %a in hexadecimal, powers of 2 notation\n", about);printf("%f can be written %e\n", abet, abet);printf("%Lf can be written %Le\n", dip, dip);return 0; }
运行结果:
程序说明:
给那些未在函数原型中显式说明参数类型的函数(如,printf())传递参数时,C编译器会把float类型的值自动转换成double类型。
- 浮点值的上溢和下溢
当计算导致数字过大,超过当前类型能表达的范围时,就会发生上溢。
在计算过程中损失了原末尾有效位上的数字,这种情况叫作下溢。
还有另一个特殊的浮点值 NaN (not a number的缩写)。例如,给asin()函数传递一个值,该函数将返回一个角度,该角度的正弦就是传入函数的值。但是正弦值不能大于1。因此,如果传入的参数大于1,该函数的行为是未定义的。在这种情况下,该函数将返回NaN值, printf()函数可将其显示为nan,NaN或其他类似的内容。
3.4.7 复数和虚数类型
3种复数类型:float_Complex、double_Complex和long double_Complex。例如,float_Complex类型的变量应包含两个float类型的值,分别表示复数的实部和虚部。
3种虚数类型:float_Imaginary、double_Imaginary和long double_Imaginary。
如果包含complex.h头文件,便可用complex代替_Complex,用imaginary代替_imaginary,还可以用I代替-1的平方根。
3.4.8 其他类型
数组、指针、结构和联合。
3.4.9 类型大小
typesize.c程序:列出当前系统的各类型的大小
/* typesize.c -- 打印类型大小 */
#include <stdio.h>
int main(void)
{/* C99为类型大小提供%zd转换说明 */printf("Type int has a size of %zd bytes.\n",sizeof(int));printf("Type char has a size of %zd bytes.\n",sizeof(char)); printf("Type long has a size of %zd bytes.\n",sizeof(long)); printf("Type long long has a size of %zd bytes.\n",sizeof(long long)); printf("Type double has a size of %zd bytes.\n",sizeof(double));printf("Type long double has a size of %zd bytes.\n",sizeof(long double));return 0;}
运行结果:
程序说明:
sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小。
C99和C11提供%zd转换说明匹配sizeof的返回类型。不支持C99和C11的编译器可用%u或%lu代替%zd。
最后几行printf()语句都被分为两行,只要不在引号内部或一个单词中间间断就行,就可以这样写。
3.5 使用数据类型
编写程序时,应注意合理选择所需的变量及其类型。在使用变量之前必须先声明,并选择有意义的变量名。初始化变量应使用与变量类型匹配的常数类型。
把一个类型的数值初始化给不同类型的变量时,编译器会把值转换成与变量匹配的类型,这将导致部分数据丢失。编译器对这样的初始可能给出警告。
3.6 参数和陷阱
双引号中的字符序列被称为字符串。无论双引号中包含多少个字符和标点符号,一个字符串就是一个参数。
C语言用逗号分隔函数中的参数。
printf()和scanf()与一般函数不同,它们的参数个数是可变的。要确保转换说明的数量、类型与后面参数的数量、类型相匹配。
badcount.c程序:
/* badcount.c -- 参数错误的情况 */
#include <stdio.h>
int main(void)
{int n = 4;int m = 5;float f = 7.0f;float g = 8.0f;printf("%d\n", n, m); /* 参数太多 */printf("%d %d %d\n", n); /* 参数太少 */ printf("%d %d\n", f, g); /* 值的类型不匹配 */return 0;
}
运行结果:
程序说明:
用%d显示float类型的值,其值不会被转换成int类型。
3.7 转义序列示例
escape.c程序:
/* escape.c -- 使用转义序列 */
#include <stdio.h>
int main(void)
{float salary;printf("\aEnter your desired monthly salary:"); // 1printf(" $_______\b\b\b\b\b\b\b"); // 2scanf("%f", &salary);printf("\n\t$%.2f a month is $%.2f a year.", salary,salary*12.0); // 3printf("\rGee!\n"); // 4return 0;}
运行结果:
程序说明:
退格:\b 水平制表符:\t 回车:\r
第四条printf()语句以 \r 开始。这使得光标回到当前行的起始处。然后打印Gee!,接着 \n 使光标移至下一行的起始处。
问题:printf()何时把输出发送到屏幕上?
最初,printf()语句把输出发送到一个叫作缓冲区的中间存储区域,然后缓冲区中的内容再不断被发送到屏幕上。C标准明确规定了何时把缓冲区中的内容发送到屏幕:当缓冲区满、遇到换行字符或需要输入的时候(从缓冲区把数据发送到屏幕或文件被称为刷新缓冲区)。
还有一种刷新缓冲区的方法是使用fflush()函数。
C Primer Plus 第三章 数据和C 阅读笔记相关推荐
- c语言中,x-y,'105',ab,7f8那个是正确的,C语言程序设计_第三章 数据.ppt
C语言程序设计_第三章 数据 * 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型 学习运算符应注意 * 基本算术运算符: + - * / % 结合方向: ...
- C Primer Plus第三章总结
C Primer Plus第三章总结 关于整数和浮点数 关于整数的常用的关键词有:char.int .long.longlong.unsigned-- 浮点数常用的关键词有:double.float ...
- C primer plus 学习笔记_第三章 数据和C
第3章 数据和C 关键字:int .short.long.unsigned.char.float.double._Bool. _Complex._Imaginary 运算符:sizeof() 函数:s ...
- C Primer Plus(第六版)第三章 数据和C
笔记记录 1.float 类型可以储存带小数的数字. 2.printf()中使用%f来处理浮点值.%.2f中的.2用于精确控制输出,指定输出的浮点数只显示小数点后面两位. 3.scanf()函数用于读 ...
- 可视化导论 - 第四章 数据可视化流程 - 学习笔记
第4章 数据可视化流程 4.1 数据可视化流程 以数据流向为主线,其主要模块包括数据采集.数据处理和变换.可视化映射和用户感知. 4.2 数据处理和数据变换 4.2.1 数据滤波 数据滤波器在信号处理 ...
- 《计算机网络 自顶向下》第三章==传输层==随堂笔记
文章目录 第三章 传输层 3.1 传输层概述 传输层提供什么服务? 传输层协议 3.2 多路复用和解复用 多路复用 解复用 3.3 UDP(User Datagram Protocol) 3.4 可靠 ...
- 同济高等数学第三章之经典错误知识点笔记
同济高等数学第三章 1.微分中值定理 1.费马引理 2.罗尓定理 3.拉格朗日中值定理 4.柯西中值定理 5.皮亚诺型余项泰勒公式 6.拉格朗日型余项泰勒公式 2.导数应用 1.函数的单调性 2.函数 ...
- JavaSE 第三章 流程控制语句方法定义 笔记
文章目录 3.1 语句 3.2 顺序结构 3.3 输入输出语句 3.3.1 常见的输出语句 3.3.2 输入语句 3.4 分支语句 3.4.1单分支条件判断:if 3.4.2 双分支条件判断:if.. ...
- html中输出 u263c,《 JavaScript程序设计》—— 第三章 数据
3.1 数据类型 JavaScript实际上有6种数据类型: 布尔值,只有true和false两个值 数值,比如 81 和 4.21 文本,JavaScript里称之为字符串 特殊值undefined ...
最新文章
- 2008年上半年 网络工程师 上下午试卷【附带答案】
- 计算机里面有鬼的恐怖游戏,2018年度十大最佳PC恐怖游戏
- DC的网络连接端口与防火墙设置[为企业部署Windows Server 2008系列十]
- HDU4506 小明系列故事——师兄帮帮忙
- 备忘::我所用的第三方软件的源
- BasicExcel CSpreadSheet 使用感受
- 数据结构与算法之-----队列(Queue)
- nfc修改饭卡软件下载_你还要什么校园卡?有NFC不就够了
- 全志 a33 linux qt,全志A33 lichee 搭建Qt App开发环境编写helloworld
- JS库之Highlight.js高亮代码
- Java进阶--Java垃圾回收机制全面解析
- 项目经理要“谋定而后动,知止而有得,万事皆有法,不可乱也”
- 燃气管网地理信息系统
- php拼手速 抢红包,拼手速必备 | 这样设置,微信抢红包速度更快!
- harmonyos蓝牙,鸿蒙OS 蓝牙概述
- 使用uni-app把h5网页封装成安卓app
- 2019年末,来一发基于Hexo自建博客生态指南!
- Kafka消费者消费方式
- 二十四式长生图——清手抄本(扫描版)
- 彩虹物语服务器维护,红手指彩虹物语云手机使用教程_红手指彩虹物语云挂机教程_彩虹物语息屏挂机教程_红手指云手机官网...
热门文章
- 如何从Apple App Store获得退款
- type=javascript和type=text/javascript
- 江宁区办理居住证的细节
- 广州车展直击:中国哈弗打造业内首个用户型品牌
- 佳期良年服务器克土帮微信群,大话西游2他们全部是克土!佳期“奇葩”帮派要搞大事!...
- MySQL 语句级避免重复插入—— Insert Select Not Exist
- C#Dictionary字典
- python 读取outlook邮箱邮件
- java/android 设计模式学习笔记目录
- shodan搜索附近摄像头_深夜,摄像头前惊现一团白光!不明光源,村民心慌