版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章基本的数据类型、运算符与程序语句
语言程序设计第二章基本数据类型C2.1数据在计算机内的存储形式2.2标识符、变量和常量2.3基本数据类型2.4运算符和表达式2.5标准的输入/输出函数2.6程序范例2.7本章小结2.8问与答内容简介掌握变量和常量的概念;理解各种类型的数据在内存中的存放形式;掌握各种类型数据的常量的使用方法;掌握各种整型、字符型、浮点型变量的定义和引用方法;了解调用printf函数输出各种类型数据的方法;掌握数据类型转换的规则以及强制数据类型转换的方法;掌握赋值运算符、算术运算符、位运算符、逗号运算符以及sizeof的使用方法;理解运算符的优先级和结合性的概念,记住所学的各种运算符的优先级关系和结合性。学习目标
语言程序设计第二章基本数据类型C2.1
数据在计算机内的存储形式
语言程序设计第二章基本数据类型C计算机内的数据都是以二进制位(bit)存储的,但是,每种类型的数据在计算机内所占的字节数是不同的。C规定,每个字符(character)型数据占用一个字节的内存空间,字符值是以ASCII码值存储在计算机中,占用1个字节例如字符‘A’存放形式:01000001例如字符‘B’存放形式:01000010B的ASCII码值66A的ASCII值65
2.1.1字符型数据2.1数据在计算机内的存储形式
语言程序设计第二章基本数据类型CC语言中,整型数(integernumber)有六种类型,分为有符号整数和无符号整数两大类。在TurboC中,shortint
和int型补码都占2个字节16位。无符号整数存储相对简单。对于有符号数,规定最高位为符号位,0表示正数,1则表示负数,并采用补码表示。正数的补码和原码相同,负数的补码是除符号位外,各位取反加1。
例如3的补码:
0000000000000011最高位是符号位,其值0表示正数,1表示负数。
1111111111111101例如-3的补码:2.1.2整型数据2.1数据在计算机内的存储形式
语言程序设计第二章基本数据类型C补码表示的二进制数,还原成原码时,正数的补码和原码相同,负数的原码是对补码除符号位外其余各位取反加1。例如:[+6]补=00000000
00000110;[-6]补=11111111
11111010;如果,[X]补=11111111
11111100,则X=-0000000000000100=-4。2.1.2整型数据2.1数据在计算机内的存储形式
语言程序设计第二章基本数据类型C实型数据(realnumber)又称为浮点型数据(floating-pointnumber),与整型数据的存储情况不同,为了扩大数的表示范围,实型数据是按指数形式存储的。在TurboC中,float型数据在内存中占据4个字节(32位二进制),分别存放符号位、规格化的尾数、阶符和阶码。例如,实数-32.28E-20的存储情况如图1bit23bit1bit7bit1 0.3228000 18
符号位规格化的尾数阶符位阶码2.1.3实型数据2.2标识符、变量和常量语言程序设计第二章基本数据类型C用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符(identifier)。简单地说,标识符就是一个名字。C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。如sum,average,_total,Class,day,Day_1等都是合法的标识符。M.D.John,¥123,#33,3D64,a>b,因为都含有非法字符。所以它们都不是合法的标识符。注意:大写字母和小写字母被认为是两个不同的字符。因此,sum和SUM,Class和class是两个不同的变量名。一般变量名习惯用小写字母表示。ANSIC标准没有规定标识符的长度(字符个数),但各个C编译系统都有自己的规定。2.2.1标识符2.2标识符、变量和常量语言程序设计第二章基本数据类型C变量就是内存中的一块区域符号表示,其中存放的数据在程序运行过程中是可以修改的。变量由两个要素构成:变量的名称和变量的类型。变量的名称是变量存放的存储空间的唯一标识,变量的类型决定了这块存储区域的大小。在程序中,涉及变量语句有3种:变量的定义、变量的赋值和变量的引用。变量占内存多少,是由变量的类型决定的。如整型变量,就占内存中的2个连续的单元(字节),浮点型就占内存中4个连续的单元(字节)。每个变量都有对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。
2.2.2变量2.2标识符、变量和常量语言程序设计第二章基本数据类型CC规定对所有的变量要“先定义,后使用”,但对于后续章节要介绍的指针型变量,要做到“先定义,后赋值,再使用”。这样规定有以下好处:(1)便于纠错。凡未被事先定义的,不作为变量名,这就能保证程序中变量名能正确使用。(2)分配存储空间。每个变量被指定为一确定类型,每种类型占用的存储单元数是固定的,在编译时就能为其分配相应数目的存储单元。(3)运算合法性检查。编译时按照变量所属的数据类型,检查对该变量进行的运算是否合法。2.2.2变量2.2标识符、变量和常量语言程序设计第二章基本数据类型C常量是指在程序运行期间不能改变的数据。常量有两种表现形式:直接写出值,或用#define宏定义命令为数据指定一个符号名称(符号名称即标识符,它的命名规则和变量相同)。【例2-1】一个符号常量的例子。#include<stdio.h>#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d\n",total);}Ex2_1.c演示2.2.3常量2.2标识符、变量和常量语言程序设计第二章基本数据类型C程序说明:程序用#define命令行定义PRICE代表常量30,此后凡在本程序中出现的PRICE都代表30,可以和常量一样进行运算。注意符号常量与变量的不同,符号常量的值在其作用域内不能改变,也不能被赋值。如果给PRICE赋值是错误的。使用符号常量的好处:(1)含义清楚,例2-1的程序中,从PRICE就可以知道它代表价格。因此定义符号常量名时应考虑“见名知意”。(2)在需要改变一个常量时能做到“一改全改”。例2-1中#definePRICE30改为#definePRICE35,则在程序中所有以PRICE代表的价格就一律自动改为35。2.2.3常量2.3基本数据类型C数据类型基本类型指针类型空类型void定义类型typedef字符类型char枚举类型enum整型实型单精度型float双精度型double数组结构体struct共用体union短整型short长整型long整型int数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作语言程序设计第二章基本数据类型C本章所介绍的数据类型构造类型语言程序设计第二章基本数据类型C1、整型数的分类及表示范围C语言规定了6种整型:(1)有符号基本整型,占2个字节,用[signed]int定义。如:inta;(定义a变量是整型变量)(2)无符号基本整型,占2个字节,用unsigned[int]定义。如:unsignedintb;(定义b变量是无符号整型变量)(3)有符号短整型,占2个字节,用[signed]short[int]定义。如:shortc;(定义c变量是短整型变量)2.3基本数据类型2.3.1.整型语言程序设计第二章基本数据类型C1、整型数的分类及表示范围
(4)无符号短整型,占2个字节,用unsignedshort[int]定义。如:unsignedshortc;(定义c变量是无符号的短整型变量)(5)有符号长整型,占4个字节,用[signed]long[int]定义。如:longc;(定义c变量是长整型变量)(6)无符号长整型,占4个字节,用unsignedlong[int]定义。如:unsignedlongc;(定义c变量是无符号的长整型变量)2.3基本数据类型2.3.1.整型语言程序设计第二章基本数据类型C1、整型数的分类及表示范围
类型位数取值范围[signed]int16-32768~32767即-215~215-1unsigned[int]160~65535即0~216-1[signed]short[int]16-32768~32767即-215~215-1]unsignedshort[int]160~65535即0~216-1long[int]32-2147483648~2147483647即-231~231-1]unsignedlong[int]320~4294967295即0~232-1]2.3基本数据类型2.3.1.整型语言程序设计第二章基本数据类型C1、整型数的分类及表示范围Ex2_2演示
【例2-2】有符号整数溢出情况。#include<stdio.h>main(){
int
a,b;
a=32767;b=a+1;printf("%d,%d",a,b);}2.3基本数据类型2.3.1.整型语言程序设计第二章基本数据类型C1、整型数的分类及表示范围
请注意:一个整型变量只能容纳-32768~32767范围内的数,无法表示大于32767的数。遇此情况就发生“溢出”,但运行时并不报错。它好像汽车的里程表一样,达到最大值以后,又从最小值开始计数。所以,32767加1得不到32768,而得到-32768。从这里可以看到:C的用法比较灵活,往往出现副作用,而系统又不给出“出错信息”,要靠程序员的细心和经验来保证结果的正确。2.3基本数据类型2.3.1.整型语言程序设计第二章基本数据类型C2.整型常量(1)C中整常数的表示整型常量即整常数。C整常数可用以下三种形式表示:1、十进制整数。如123,-456,0。2、八进制整数。以数字0开头的数是八进制数。如0123表示八进制数123,即(123)8,其值为:1×82+2×81+3×80,等于十进制数83。3、十六进制整数。以0x开头的数是十六进制数。如0x123,代表十六进制数123,即(123)16=1×162+2×161+3×160=256+32+3=291。-0x12等于十进制数-18。2.3基本数据类型2.3.1.整型语言程序设计第二章基本数据类型C2.整型常量(2)整常量的类型整型变量可分为int、shortint、longint和unsignedint、unsignedshort、unsignedlong等类别。那么常量在赋值给变量时,应该注意以下几点:1、一个整数在赋值给一个变量时,要考虑这个整数值是否在变量类型能表示的范围,超出则会出现问题;2、一个整常量后面加一个字母u或U,认为是unsignedint型,如12345u,在内存中按unsignedint规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据)。在一个整常量后面加一个字母l或L,则认为是longint型常量。2.3基本数据类型2.3.1.整型语言程序设计第二章基本数据类型C1.实型数的分类及表示范围C提供了3种表示实数的类型:(1)单精度浮点数类型,简称浮点类型,占4个字节,用float定义,例如:floatx,y;(指定x、y为单精度实数)(2)双精度浮点数类型,简称双精度类型,占8个字节,用double定义,例如:doublez;(指定z为双精度实数)(3)长双精度类型,占10个字节(VC下8个字节),用longdouble定义,例如:longdoublet;(指定t为长双精度实数)2.3基本数据类型2.3.2实型数据语言程序设计第二章基本数据类型C1.实型数的分类及表示范围浮点型数据的相关数据类型比特数有效数字数值范围float326~7-3.4×(10-38)~3.4×(1038)double6415~16-1.7×(10-308)~1.7×(10308)longdouble8018~19-1.2×(10-4932)~1.2×(104932)2.3基本数据类型2.3.2实型数据语言程序设计第二章基本数据类型C1.实型数的分类及表示范围Ex2_3演示【例2-3】浮点型数据的舍入误差。#include<stdio.h>main(){floata,b;
a=123456.789e5;b=a+20;printf("a=%f,b=%f",a,b);}2.3基本数据类型2.3.2实型数据语言程序设计第二章基本数据类型C1.实型数的分类及表示范围程序说明:程序内printf函数中的“%f”是输出一个实数时的格式符。程序运行时,输出b的值与a相等。原因是:一个浮点型变量只能保证数据是7位有效数字,后面的数字只供参考,并不准确地表示该数。运行程序得到的a和b的值都是一样的,可以看出,把20加在后几位上,是无意义的。也就是说,你必须能估计到计算的结果应该在该类型所能表示的精度范围内。也应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数。与此类似,用程序计算1.0/3*3的结果并不等于1。2.3基本数据类型2.3.2实型数据语言程序设计第二章基本数据类型C2.浮点数运算的处理在运算时,C编译系统将浮点型常量作为双精度来处理。例如已定义一个浮点型变量f,有如下语句:f=2.45678*4523.65系统将2.45678和4523.65自动按双精度数据存储(占64位)和运算,得到一个双精度的乘积,然后取前7位赋给浮点型变量f,以保证计算结果更精确,但是运算速度降低了。可以在数的后面加字母f或F(如1.65f,654.87F),这样编译系统就会按单精度(32位)处理。2.3基本数据类型2.3.2实型数据语言程序设计第二章基本数据类型C1.字符常量C语言的字符常量是用单引号括起来的一个字符。如‘a’,‘x’,‘D’,‘?’,‘$’等都是字符常量。注意,‘a’和‘A’是不同的字符常量。一个字符常量的值就是该字符在字符集中对应的ASCII编码值。除了以上形式的字符常量外,C还允许用一种特殊形式的字符常量,就是以一个“\”开头的字符序列。这是一种“控制字符”,只能采用特殊形式来表示。
2.3基本数据类型2.3.3字符型语言程序设计第二章基本数据类型C1.字符常量转义字符及其含义字符形式含义ASCII代码\n换行,将当前位置移到下一行开头10\t水平制表(跳到下一个tab位置)9\b退格,将当前位置移到前一列8\r回车,将当前位置移到本行开头132.3基本数据类型2.3.3字符型语言程序设计第二章基本数据类型C1.字符常量\f换页,将当前位置移到下页开头12\\反斜杠字符“\”92\'单引号字符39\"双引号字符34\ddd1到3位8进制数所代表的字符\xhh1到2位16进制数所代表的字符转义字符及其含义2.3基本数据类型2.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C1.字符常量
Ex2_4.c演示【例2-4】转义字符的使用。#include<stdio.h>voidmain(){printf("
ab
c\t
de\rf\tg\n");
printf("h\ti\b\bj
k\n");}2.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C1.字符常量程序说明:示例中的“
”代表“空格”。程序中用printf函数直接输出双引号内的各个字符。特别要注意其中的“转义字符”。第一个printf函数先在第一行左端开始输出“ab
c”,然后遇到“\t”,它的作用是“跳格”,即跳到下一个“制表位置”,在我们所用系统中一个“制表区”占8列。“下一制表位置”从第9列开始,故在第9~11列上输出“
de”。下面遇到“\r”,它代表“回车”(不换行),返回到本行最左端(第1列),输出字符“f”,然后遇到“\t”再使当前输出位置移到第9列,输出“g”。下面是“\n”,作用是“使当前位置移到下一行的开头”。2.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C1.字符常量程序说明:第二个printf函数先在第1列输出字符“h”,后面的“\t”使当前位置跳到第9列,输出字母“i”,然后当前位置应移到下一列(第10列)准备输出下一个字符。下面遇到两个“\b”,“\b”的作用是“退一格”,因此“\b\b”的作用是使当前位置回退到第8列,接着输出字符“j
k”。程序运行时打印的结果是:fab
c
gdeh
jik2.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C1.字符常量程序说明:注意显示在屏幕上看到的结果与上述打印结果是不同的。这是由于“\r”使当前位置回到本行开头,自此输出的字符(包括空格和跳格所经过的位置)将取代原来屏幕上该位置上显示的字符。所以原有的“abc(4个空格)”被新的字符“f(7个空格)g”代替,其后的“de”未被新字符取代。换行后先输出“h(7个空格)i”,然后光标位置移到i右面一列处,再退两格后输出“jk”,j后面的空格符将原有的字符“i”取而代之。因此屏幕上看不到“i”。实际上,屏幕上完全按程序要求输出了全部的字符,只是因为在输出前面的字符后很快又输出后面的字符。而打印机则是按顺序真实的打印了结果,实际上是“记录了”输出的过程。2.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C2.字符变量字符型变量用来存放字符常量,注意只能放一个字符。字符变量的定义用保留字char定义,占一个字节,例如:charc1,c2;它表示c1和c2为字符型变量,每个变量可以放一个字符,因此可以用下面的语句对c1、c2赋值:c1='a';c2='b';C规定以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码值放到存储单元中。2.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C2.字符变量Ex2_5.c演示【例2-5】向字符变量赋以整数。#include<stdio.h>main(){chara,b;a=65;b=66;printf("%c,%c\n",a,b);printf("%d,%d\n",a,b);}2.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C2.字符变量程序说明:程序中定义a,b为字符型,但在赋值语句中赋以整型值。字符在内存是以ASCII代码形式存在。从结果看,a,b值的输出形式取决于printf()函数格式串中的格式符,当格式符为“c”时,对应输出的变量值为字符,当格式符为“d”时,对应输出的变量值为整数。2.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C2.字符变量
Ex2_6演示【例2-6】字符参与数值运算。main(){chara,b;a='a';
b='b';a=a-32;b=b-32;printf("%c,%c\n%d,%d\n",a,b,a,b);}2.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C2.字符变量程序说明:字符数据与整型数据可以互相赋值。如:inti;charc;i='a';c=97;是合法的。如果用格式符“%d”将
i的值输出,可得到97。用“%c”输出c,可得字符'a'。如果在上面语句之后执行以下语句:printf("%c,%d\n",c,c);printf("%c,%d\n",i,i);输出:a,97a,972.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C3.字符串常量字符常量是由一对单引号括起来的单个字符,而字符串常量是一对双引号括起来的字符序列。例如下面是合法的字符串常量:"student","CHINA","a","$123.45"可以输出一个字符串,例如:printf("Howdoyoudo?");不要将字符常量与字符串常量混淆。'a'是字符常量,"a"是字符串常量,二者不同。2.3.3字符型2.3基本数据类型语言程序设计第二章基本数据类型C2.字符变量
‘a’和“a”究竟有什么区别?由于C规定:在每一个字符串的结尾加一个字符串结束标志‘\0’(ASCII码为0),以便系统据此判断字符串是否结束。ASCII码为0的字符是“空操作字符”,即它不引起任何控制动作,也不显示任何内容。如果有一个字符串“printer”,实际上在内存中是如图所示。
printer\0它占内存不是7个字节,而是8个字节,最后一个字节为‘\0’。但在输出时不输出‘\0’。注意,在写字符串时不必加‘\0’,‘\0’字符是系统自动加上的。在C语言中没有专门的字符串变量,如果想将一个字符串存放在变量中,以便保存,必须使用字符数组。2.3.3字符型2.4运算符和表达式语言程序设计第二章基本数据类型CC的运算符有以下几类:1.算术运算符(+-*/%++--)2.关系运算符(><==>=<=!=)3.逻辑运算符(!&&||)4.位运算符(<<>>
|^&)5.赋值运算符(=及其扩展赋值运算符)6.条件运算符(?:)7.逗号运算符(,)8.指针运算符(*和&)9.求字节数运算符(sizeof)10.强制类型转换运算符((类型))11.分量运算符(.->)12.下标运算符([])13.其他(如函数调用运算符())2.4运算符和表达式语言程序设计第二章基本数据类型C1.基本的算术运算符<1>+,加法运算符,或正值运算符,如3+5等;<2>-,减法运算符,如5-2等,但要注意,+、-号可做为符号使用,其优先级是不一样的;<3>*,乘法运算符,如3*5,*还有一种功能是指针运算,和此处的乘法运算毫无关系,是两种不同的运算符,只是表示的字符都是“*”而已;<4>/,除法运算符,如5/3;<5>%,模运算符,或称求余运算符,%两侧均应为整型数据,如7%4的值为3,11%2的值是1;<6>++,单目运算符,变量自增1;在一个表达式中,放在变量前,是先自增1再使用变量(参与运算),放在变量后,是先使用变量(参与运算),后自增1;<7>--,单目运算符,变量自减1;用法同++一样。2.4.1算术运算符和算术表达式2.4运算符和表达式语言程序设计第二章基本数据类型C1.基本的算术运算符需要说明,两个整数相除的结果依然为整数,如5/3的结果值为1,舍去小数部分。但是,如果除数或被除数中有一个为负值,则舍入的方向是不固定的。例如,-5/3在有的机器上得到结果-1,有的机器则给出结果-2。多数机器采取“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠拢。如果参加+、-、*、/运算的两个数中有一个为实数,则结果是double型,因为所有实数都按double型进行运算。2.4.1算术运算符和算术表达式2.4运算符和表达式语言程序设计第二章基本数据类型C2.算术表达式用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,就是C的算术表达式。运算对象包括常量、变量、函数等。例如,下面是一个合法的C算术表达式:a*b/c-1.5+'a‘C语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,但还要注意运算符的结合方向。C规定了各种运算符的结合方向(结合性),算术运算符的结合方向为“自左至右”。2.4.1算术运算符和算术表达式2.4运算符和表达式语言程序设计第二章基本数据类型C3.自增、自减运算符(1)自增运算符++,用法有两种:用法1:变量++;用法2:++变量;这两种用法都能使变量的值加1,但是有区别。
2.4.1算术运算符和算术表达式2.3简单数据类型与表示范围语言程序设计第二章基本数据类型C3.自增、自减运算符
Ex2_7演示【例2-7】++运算符在变量前后的区别。
#include<stdio.h>main(){
int
a,b,c=1;
a=c++; b=++c; printf("a=%d,b=%d,c=%d\n",a,b,c);}2.4.1算术运算符和算术表达式2.3简单数据类型与表示范围语言程序设计第二章基本数据类型C3.自增、自减运算符程序说明:为什么会出现这样的结果?c++赋给a时,是先将c的值赋给a,然后再自加,所以a的值是1,随后c的值就变成2,执行++c时,c变成3,所以,b和c的值都是3。自增运算符放在变量的前面,就是先自增,后使用变量,自增运算符放在变量的后面,是先按原值使用变量,再自增。2.4.1算术运算符和算术表达式2.4运算符和表达式语言程序设计第二章基本数据类型C(2)自减运算符--,用法有两种:用法1:变量--;用法2:--变量;这两种用法都能使变量的值减1,但是有区别,和自增运算符一样,此处不再赘述。作用是使变量的值减1,如:--i(在使用i之前,先使i的值减1),i--(在使用i之后,再使i的值减1)。3.自增、自减运算符2.4.1算术运算符和算术表达式2.4运算符和表达式语言程序设计第二章基本数据类型C【例2-8】注意++在表达式中的使用。#include<stdio.h>main(){
int
a,b=1;
a=(b++)+(b++)+(b++); printf("a=%d,b=%d\n",a,b);}3.自增、自减运算符Ex2_8演示2.4.1算术运算符和算术表达式2.4运算符和表达式语言程序设计第二章基本数据类型C【例2-9】自加变量作为printf()函数参数。#include<stdio.h>main(){
intc=1;
printf("c3=%d,c2=%d,c1=%d\n",c++,c++,c++);}3.自增、自减运算符
Ex2_9演示2.4.1算术运算符和算术表达式2.4运算符和表达式语言程序设计第二章基本数据类型C说明:(1)自增运算符(++)和自减运算符(--),只能用于变量,而不能用于常量或表达式;(2)++和--的结合方向是“自右至左”。如:-i++,-号和++是同一优先级,所以-i++相当于-(i++);(3)自增(减)运算符常用于循环语句中,使循环变量自动加1,也用于指针变量,使指针指向下一个地址。3.自增、自减运算符2.4.1算术运算符和算术表达式2.4运算符和表达式语言程序设计第二章基本数据类型C关系运算符主要是用于数值的大小比较,因此“关系运算”实际上是“比较运算”。将两个值进行比较,判断比较的结果是否符合给定的条件。例如,a>3是一个关系表达式,大于号(>)是一个关系运算符,如果a的值为5,则满足给定的“a>3”条件,因此关系表达式的值为“真”(即“条件满足”);如果a的值为2,不满足“a>3”条件,则称关系表达式的值为“假”,真的值为1,假的值为0。2.4.2关系运算符和关系表达式2.4运算符和表达式语言程序设计第二章基本数据类型C1、关系运算符及其优先次序C语言提供6种关系运算符:①<(小于)②<=(小于等于)③>(大于)④>=(大于等于)⑤==(等于)⑥!=(不等于)都是双目运算符。关于优先次序:前4种关系运算符(<,<=,>,>=)的优先级别相同,后两种也相同前4种高于后2种。例如,“>”优先于“==”。而“>”与“<优先级相同。关系运算符的优先级低于算术运算符。关系运算符的优先级高于赋值运算符。2.4.2关系运算符和关系表达式2.4运算符和表达式语言程序设计第二章基本数据类型C2.关系表达式用关系运算符连接的式子(可以是常量、变量、算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式等),称关系表达式。关系表达式通式:(表达式1)(关系运算符)(表达式2)[(关系运算符)(表达式3)][...][(关系运算符)(表达式n)]例如,下面都是合法的关系表达式:a+b>b+c,(a=3)>(b=5),’a’<’b’,(a>b)>(b<c)。关系表达式的值是一个逻辑值,即“真”或“假”。
2.4.2关系运算符和关系表达式2.4运算符和表达式语言程序设计第二章基本数据类型C【例2-10】关系运算的例子。Ex2_10演示main(){inta,b,c,x=17,y=16,z=13;a=x>y>z;b=--x-y>=z;c=x==y;printf("\nx=%d,y=%d,z=%d\n",x,y,z);printf("\na=%d,b=%d,c=%d\n",a,b,c);}2.4.2关系运算符和关系表达式2.4运算符和表达式语言程序设计第二章基本数据类型C程序说明:由于“--”运算改变了x的值,所以x是16,y、z的值在运算过程中没有变化,由于x>y为真,值为1,而1>z为假,所以a的值是0,由于--x使x的值变为16,所以--x-y的值是0,所以0>=z的值为假,所以b的值是0,由于x==y为真(x已经减去1等于16),所以c的值是1。2.4.2关系运算符和关系表达式2.4运算符和表达式语言程序设计第二章基本数据类型C1.逻辑运算符及其优先次序逻辑运算符用于数值的逻辑操作。C语言提供:&&逻辑与、||逻辑或、!逻辑非三种逻辑运算符。“&&”和“||”是“双目运算符”,它要求有两个运算量(操作数),如(a>b)&&(x>y),(a>b)||(x>y)。“!”是单目运算符,只要求一个运算量,如!(a>b)。逻辑运算的规则:a&&b若a、b都为真时,a&&b才为真;a||b若a、b至少之一为真,a||b就为真。只有a、b同时为假时,a||b才为假;!a若a为真,则!a为假,反之,若a为假,则!a为真。2.4.3逻辑运算符和逻辑表达式2.4运算符和表达式语言程序设计第二章基本数据类型C2.逻辑表达式用逻辑运算符连接的式子(可以是常量、变量、算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式等),称为逻辑表达式。逻辑表达式的值应该是一个逻辑量“真”或“假”。C语言编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但用于判断一个量是为“真”或“假”时,以非0代表“真”,以0代表“假”。逻辑运算的真值表见下表所示:
2.4.3逻辑运算符和逻辑表达式2.4运算符和表达式语言程序设计第二章基本数据类型C2.逻辑表达式
逻辑运算的真值表ab!a!ba&&ba||b非0非00011非0001010非010010011002.4.3逻辑运算符和逻辑表达式2.4运算符和表达式语言程序设计第二章基本数据类型C2.逻辑表达式熟练掌握C语言的关系运算和逻辑运算后,可以巧妙地用一个逻辑表达式来表示一个复杂的条件。例如,判断一个年是否为闰年符合下面两个条件之一:①能被4整除,但不能被100整除,②能被4整除,又能被400整除。(year%4==0&&year%100!=0)||year%400==0思考:在数学上1≥x≥0,在C里怎样表达?对于x≤0或x≥1区间,又怎样表达?1≥x≥0:x>=0&&x<=1x≤0或x≥1:x<=0||x>=12.4.3逻辑运算符和逻辑表达式2.4运算符和表达式语言程序设计第二章基本数据类型C2.逻辑表达式Ex2-11演示【例2-11】测试关系运算结果。#include<stdio.h>main(){int
a,b,c;a=1;b=0;c=-1;if(a>b)printf("ifa>bvalueis%d;\n",a>b);if(b<c);elseprintf("ifb<cvalueis%d;\n",b<c);if(c)printf("%dofifconditionistrue;\n",c);if(b);printf("%dofifconditionisfalse.",b);}2.4.3逻辑运算符和逻辑表达式2.4运算符和表达式语言程序设计第二章基本数据类型C1.赋值运算符赋值运算符用于对变量进行赋值,分为简单赋值和复合赋值。复合赋值包括复合算术赋值和复合位运算赋值。赋值符号“=”就是赋值运算符,它的作用是将运算符右边的数据或者表达式“赋给”左边的一个变量,如“x=5”。C允许在定义变量时给变量初始化(即给变量赋初值),例如:inta=1;floatb=3.14;charc='A';如果对几个变量赋同一个初值,可以写成:inta=5,b=5,c=5;不可以写成:inta=b=c=5;但可以写成:inta,b,c;a=b=c=5;2.4.4赋值运算符和赋值表达式2.4运算符和表达式语言程序设计第二章基本数据类型C2.复合的赋值运算符
在赋值符“=”之前加上其它运算符,可以构成复合的运算符。如果在“=”前加一个“+”运算符就成了复合运算符“+=”。例如,可以有:a+=3等价于a=a+3以“a+=3”为例来说明,它相当于使a进行一次自加3的操作。即先使a加3,再赋给a。C语言允许使用10种复合赋值运算符。即:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=后5种是有关位运算的,如何进行位运算将在2.4.6介绍。C采用复合运算符,一是为了简化程序,使程序精练,二是为了提高编译效率,有利于编译,能产生质量较高的目标代码。2.4.4赋值运算符和赋值表达式2.4运算符和表达式语言程序设计第二章基本数据类型CC语言提供一种特殊的运算符,即逗号运算符。用它将两个表达式连接起来。例如:3+5,6+8称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为:表达式1,表达式2。逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式:a=3*5,a*4经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。2.4.5逗号运算符和逗号表达式2.4运算符和表达式语言程序设计第二章基本数据类型C一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=3*5,a*4),a+5先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为20。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,……,表达式n它的值为表达式n的值。逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:①x=(a=3,6*3);②x=a=3,6*a;第①个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。第②个是逗号表达式,它包括一个赋值表达式和一个算术表达式,x的值为3。整个逗号表达式的值是18。2.4.5逗号运算符和逗号表达式2.4运算符和表达式语言程序设计第二章基本数据类型C逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中。请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。例如:printf(“%d,%d,%d”,a,b,c);上一行中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。如果改写为:printf("%d,%d,%d",(a,b,c),b,c);则“(a,b,c)”是一个逗号表达式,它的值等于c的值
2.4.5逗号运算符和逗号表达式2.4运算符和表达式语言程序设计第二章基本数据类型C【例2-12】逗号运算的例子。Ex2_12.c演示#include<stdio.h>main(){
inta=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);printf("y=%d,x=%d",y,x);}一定要注意,y=(x=a+b),(b+c)是一个逗号表达式,作用是求两个表达式的值,不要以为(x=a+b),(b+c)是逗号表达式,因为逗号运算符的优先级低于赋值运算符。2.4.5逗号运算符和逗号表达式2.4运算符和表达式语言程序设计第二章基本数据类型C位运算是指对整数进行的二进制位的运算。有时需要对整数类型变量中的某一位(bit)或几位进行操作。如将一个存储单元中的各位左移或右移一位,或者两个数按位相加等。
C提供的位运算符及其意义2.4.6位运算符与位运算运算符含义运算符含义&按位与
取反|按位或<<左移^按位异或>>右移说明:(1)位运算符中除
以外,均为二目(元)运算符,即要求两侧各有一个运算量;(2)运算量只能是整型或字符型的数据,不能为实型数据。2.4运算符和表达式语言程序设计第二章基本数据类型C1.“按位与”运算符(&)参加运算的两个运算量,按二进制位进行“与”运算。如果两个相应的位都为1,则该位的结果值为1,否则为0。即:0&0=0,0&1=0,1&0=0,1&1=1。例如3&5:00000011&00000101000000012.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C按位与有一些特殊的用途:(1)清零。如果想将一个单元清零,即使其全部二进位为0,只要用0和该单元进行&运算,即可达到清零目的。如:原有数为00101011,将它同00000000进行&运算:
00101011&00000000
00000000(2)取一个数中某些指定位。如一个整数,如只想要其中的低字节。只需将这个数与0377按位与即可(低8位全1,高8位全0)。0010110010101100&000000001111111100000000101011002.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C(3)保留一个整数的某几位,就与一个数进行&运算,此数在该对应位取1,其余全0,如保留一个整数的第12、13、14位:0010110010101100&01110000
00
00
00
0000100000
00
00
00
002.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C2.按位或运算符(|)按位或运算的规则:两个对应位中只要有一个为1,该位的结果值为1,只有两对应位都为0时,才为0。即:0|0=0,0|1=1,1|0=1,1|1=1。例如:
0000
00
0010110000
|0000
00
0001001111
0000
00
001111
11
11将0260与0117进行按位或运算,结果是低8位全置1,高8位保留原样。2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C3.“异或”运算符(^),也称XOR运算符异或运算符^也称XOR运算符。它的规则是:参加运算的两个相应位相同,则结果为0(假);相异则为1(真)。即:0^0=0,0^l=1,1^0=1,1^1=0。如:0000
00
00
00111001
^0000
00
00
001010
10
0000
00
00
00010011
“异或”的意思是:判断两个相应的位值是否为“异”,为“异”(值不同)就取真(1),否则为假(0)。
2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C异或的特殊用途:(1)使特定位翻转假设有01111010,想使其低4位翻转,即:1变为0,0变为1。可以将它与00001111进行^运算,即
01111010
^00001111
01110101结果值的低4位正好是原数低4位的翻转。要使哪几位翻转就将与其进行^运算的数中该几位设置为1即可。这是因为原数中值为1的位与1进行^运算得0,原数中的位值0与1进行^运算的结果得1。2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C异或的特殊用途:(2)与0相^,保留原值,如012^00=012
00001010^0000000000001010因为原数中的1与0进行^运算得1,0^0得0,故保留原数。2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C异或的特殊用途:(3)交换两个值,不用临时变量假如a=3,b=4,想将a和b的值互换,可以用以下赋值语句实现:a=a^b;b=b^a;a=a^b;等效于以下两步:①执行前两个赋值语句"a=a^b;"和"b=b^a;"相当于b=b^a^b。而b^a^b=a^b^b。b^b的结果为0,因为同一个数与本身相^,结果必为0。因此b的值等于a^0,其值为3。②再执行第三个赋值语句:a=a^b;由于a的值等于(a^b),b的值等于(b^a^b),因此,相当于a=a^b^b^a^b,即a的值等于a^a^b^b^b,等于b。a得到b原来的值4。2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C4."取反"运算符(
)
是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,1变0。例如:
025是对八进制数25(即二进制数
0000000000010101)按位求反。
00000000000101011111111111101010即八进制数0177752。因此,
025的值为八进制数177752,不要以为
025的值是-025。
运算符的优先级别比算术运算符、关系运算符、逻辑运算符和其它位运算符都高,例如:
a&b先进行
a运算,然后进行&运算。2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C5.左移运算符(<<)左移的一般格式:操作数<<左移的位数用来将左边操作数左移若干位,低位补0。例如,若a=15:a=a<<2;将a的各位左移2位,得到十进制数60。左端移出的高位舍弃。左移1位相当于该数乘以2,左移2位相当于该数乘以4。注意的是,此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。左移比乘法运算快得多,有些C编译程序自动将乘2的运算用左移一位来实现,将乘2n的幂运算处理为左移n位。
2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C6.右移运算符(>>)右移的一般格式:操作数>>右移的位数用来将左边操作数右移若干位,若是有符号数,高位补符号位,若是无符号数,高位总是补0。例如,若a=8:a=a>>2;将a的各位右移2位,得到10进制数2。右端移出的低位被舍弃.右移一位相当于除以2,右移n位相当于除以2n。值得注意的是,操作数无论是左移还是右移,都不会改变操作数本身的值,对操作数移位后的数据存放在中间变量,操作数本身没有变化。2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C7.位运算符与赋值运算符位运算符与赋值运算符结合可以组成扩展的赋值运算符。如:&=,|=,>>=,<<=,^=。例如,a&=6相当于a=a&6。a<<=2相当于:a=a<<2。8.不同长度的数据进行位运算如果两个数据长度不同(例如long型和int型)进行位运算(如a&b而a为1ong型,b为int型),系统会将二者按右端对齐。如果b为正数,则有左侧16位补满0。若b为负,左端应补满1。如果b为无符号整数型,则左侧添满0。2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C【例2-13】取一个整数a的第4~7位。可以这样考虑:1、先使a右移4位。目的是使要取出的那几位移到最右端。右移到右端可以用下面方法实现:即a>>4。2、设置一个低4位全为1的数。可用下面方法实现。(0<<4),即将一个全1的数左移4位,这样右端低4位为0,然后再取反。见下面所示:0:0000……0000000:1111……1111110<<4:1111……110000(0<<4):0000……0011113、将上面二者进行&运算。即:a>>4&(0<<4),根据上一节介绍的方法,与低4位为1的数进行&运算,就能将第4-7位保留下来。2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型C【例2-13】取一个整数a的第4~7位。
#include<stdio.h>main(){unsigneda,b,c,d;
scanf("%o",&a); b=a>>4; c=(0<<4):d=b&c;printf("%o,%d\n%o,%d\n",a,a,d,d);}Ex2_13.c演示2.4.6位运算符与位运算语言程序设计第二章基本数据类型C【例2-14】循环移位。要求将a进行右循环移位。即将a中原来左面(16-n)位右移n位,原来右端n位移到最左面n位。今假设用两个字节存放一个整数。为实现以上目的可以用以下步骤:①将a的右端n位先放到b中的高n位中。可以用下面语句实现:b=a<<(16-n);②将a右移n位,其左面高位n位补0。可以用下面语句实现:c=a>>n;③将c与b进行按位或运算。即c=c|b;2.4运算符和表达式2.4.6位运算符与位运算语言程序设计第二章基本数据类型C【例2-14】循环移位。#include<stdio.h>Ex2_14.c演示main(){unsigneda,b,c;intn;
scanf("a=%o,n=%d",&a,&n);
b=a<<(16-n);c=a>>n;
c=c|b;
printf("%o\n%o",a,c);
}2.4运算符和表达式2.4.6位运算符与位运算2.4运算符和表达式语言程序设计第二章基本数据类型Csizeof是C的一个保留字,也是一个运算符,作用是求一个变量占用内存的字节数,有两种用法:(1)sizeof(变量名);例如:inta;sizeof(a);则返回a变量占用的字节数2。(2)sizeof(类型名)例如:sizeof(float);则返回float类型占用的字节数4。2.4.7sizeof运算符2.4运算符和表达式语言程序设计第二章基本数据类型C1.不同类型数值混合运算时自动转换整型(包括int,short,long)和浮点型(包括float,double)数据可以混合运算。字符型数据可以与整型通用,因此,整型、浮点型、字符型数据间可以混合运算。例如:10+'a'+1.5-8765.1234*'b’在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图2.22所示.图中横向向左的箭头表示必定的转换,纵向的箭头表示当运算对象为不同类型时转换的方向。2.4.8数据类型的转换2.4运算符和表达式语言程序设计第二章基本数据类型C2.通过赋值强制类型转换如果赋值运算符两侧的类型不一致,在赋值时要进行类型转换。一般情况下,是将赋值号右边的数据类型强制转换成赋值号左边的变量类型。如果右边的数据是低级别数据,而赋值号左边的变量是高级别的数据,那转换自然就没有问题,但反过来,就会存在截取,影响数据精度。
(1)将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。如i为整型变量,执行"i=3.56"的结果是使i的值为3;
(2)将整型数据赋给单、双精度变量时,数值下变,但以浮点数形式存储到变量中;2.4.8数据类型的转换2.4运算符和表达式语言程序设计第二章基本数据类型C
(3)字符型数据赋给整型变量时,由于字符只占一个字节,而整型变量为2个字节,因此将字符数据(8位)放到整型变量低8位中。有两种情况:<1>如果字符是无符号的量,整型变量的高8位补零。
<2>如果字符是带符号的量,整型变量的高8位按字符的符号位补齐。若字符最的符号位是0,则整型变量高8位补0;若字符的最符号位是1,则高8位全补1。这称为“符号扩展”,这样做正好符合补码规则,目的是使数值保持不变。2.4.8数据类型的转换2.4运算符和表达式语言程序设计第二章基本数据类型C(4)将带符号的整型数据(int型)赋给1ongint型变量时,要进行符号扩展。如果int型数据为正值(符号位为0),则1ong、int型变量的高16位补0;如int型变量为负值(符号位为1),则1ong型变量的高16位补1,将整型数的16位送到1ong型低16位中,以保持数值不改变;(5)将unsignedint型数据赋给longint,不存在扩展问题,只需将高位补0即可;(6)长度相等的数据类型赋值,是原样照赋(连原有的符号位也作为数值一起传送)。2.4.8数据类型的转换2.4运算符和表达式语言程序设计第二章基本数据类型C3.利用强制类型转换运算符进行强制类型转换还可以利用强制类型转换运算符将一个表达式转换成所需类型。强制类型转换格式:(类型名)(表达式)|变量;可以将表达式或变量的类型强制转换成括号里的类型名。例如:(double)a(将a转换成double类型),(int)(x+y)(将x+y
的值转换成整型)需要说明的是在强制类型转换时,系统会自动生成一个所需类型的中间变量,来存放转换之后的数据,原来变量的类型并不发生变化。2.4.8数据类型的转换2.4运算符和表达式语言程序设计第二章基本数据类型C3.利用强制类型转换运算符进行强制类型转换【例2-15】强制类型转换的例子。#include<stdio.h>Ex2_15.c演示main(){floatx;
inti;x=3.6;i=(int)x;printf("x=%f,i=%d",x,i);}2.4.8数据类型的转换2.4运算符和表达式语言程序设计第二章基本数据类型C3.利用强制类型转换运算符进行强制类型转换程序说明:x类型仍为
float型,值仍等于3.6。从上可知,有三种类型转换,第一种是在运算时不必用户指定,系统在计算时自动进行的类型转换,如3+6.5。第二种是通过赋值,使赋值号右边的类型转换成左边变量的类型,第三种是强制类型转换。当第一和第二种类型转换不能实现目的或者出错时,可以用强制类型转换。如“%”运算符要求其两侧均为整型量,若x为float型,则“x%3”不合法,必须用:“(int)x%3”。强制类型转换运算优先于%运算,因此先进行(int)x的运算,得到一个整型的中间变量,然后再对3求模。此外,在函数调用时,有时为使实参与形参类型一致,可以用强制类型转换运算符得到一个所需类型的参数。2.4.8数据类型的转换2.4运算符和表达式语言程序设计第二章基本数据类型C表达式是由运算符连接常量、变量、函数所组成的式子。每个表达式都有一个值和类型。表达式求值按运算符的优先级和结合性所规定的顺序进行。一般而言,单目运算符优先级较高,赋值运算符优先级低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性。具体详见附录B所示。2.4.9表达式的计算次序2.4运算符和表达式语言程序设计第二章基本数据类型CC语言的语句是向计算机发出的操作指令,一条C语句经编译后可能产生若干条机器指令。一个C程序包含若干语句。C语句可分为说明性语句和可执行性语句。说明性语句是指非执行性的语句,即定义、声明部分的内容。如:inta;它不产生机器操作,只是对变量的定义。可执行性语句都是用来完成一定操作任务的。C程序至少包含一个函数。一个函数包含声明部分和执行部分,执行部分即由可执行性语句组成。2.4.10C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 丽水市2025浙江丽水市松阳县机关事业单位选调笔试历年参考题库典型考点附带答案详解
- 中山市2025广东中山市黄圃镇水务事务中心招聘水闸泵站管理员6人笔试历年参考题库典型考点附带答案详解
- 东台市2025江苏盐城市东台市医疗保障局招聘劳务派遣工作人员2人笔试历年参考题库典型考点附带答案详解
- 上海市2025上海市群众艺术馆招聘1人笔试历年参考题库典型考点附带答案详解
- 上海市2025上海市堤防泵闸建设运行中心招聘2人笔试历年参考题库典型考点附带答案详解
- 上海市2025上海交通大学医学院附属仁济医院拟聘人员笔试历年参考题库典型考点附带答案详解
- 三明市2025福建三明市人力资源和社会保障局市直事业单位招聘81人笔试历年参考题库典型考点附带答案详解
- 2026重庆市大足区国衡商贸股份有限公司招聘派遣制编外工作人员4人笔试历年难易错考点试卷带答案解析
- 2026四川虹信软件股份有限公司招聘技术经理岗位测试笔试历年备考题库附带答案详解
- 2025安徽临港建投集团(港城产投集团)及所属公司社会招聘地产设计岗笔试历年难易错考点试卷带答案解析
- 2025年高考物理电磁学专题训练解题技巧与真题试卷及答案
- 2026华北理工大学轻工学院招聘55人考试参考试题及答案解析
- 金华市轨道交通集团招聘笔试题库2026
- 2026年齐商银行校园招聘(102人左右)笔试模拟试题及答案解析
- 从“能想”到“会做”:具身智能产业发展白皮书(2026版)
- G1817乌斯太至银川公路乌斯太至巴音呼都格段改造工程报告表
- GB/T 31458-2026医院安全防范要求
- 2025年温州职业技术学院单招综合素质考试题库带答案解析
- 2026年灌肠技术临床应用护理规范指南
- 机械加工工艺与质量控制手册
- 确保施工方案合理性与可行性
评论
0/150
提交评论