




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言数据类型一、整型 1、整型数说明 加上不同的修饰符, 整型数有以下几种类型; (signed)short int 有符号短整型数说明。简写为short或int, 字长为2字节共16位二进制数, 数的范围是-3276832767。 (signed)long int 有符号长整型数说明。简写为long, 字长为4字节共32位二进制数, 数的范围是-21474836482147483647。 unsigned short int 无符号短整型数说明。简写为unsigned int, 字长为2字节共16位二进制数, 数的范围是065535。 unsigned long int 无符号长整型数说明。简写为unsigned long, 字长为4字节共32位二进制数, 数的范围是04294967295。 2、整型变量定义 可以用下列语句定义整型变量 int a, b; /*a、b被定义为有符号短整型变量*/ unsigned long c; /*c被定义为无符号长整型变量*/ 3、整型常数表示 按不同的进制区分, 整型常数有三种表示方法: 十进制数: 以非0开始的数 如:220, -560, 45900 八进制数: 以0开始的数 如:06; 0106 十六进制数:以0x开始的数 如:0x0D, 0xFF, 0x4e 另外, 可在整型常数后添加一个L或l字母表示该数为长整型数, 如22L, 0773L, 0x34l。二、浮点型(实型) 1、浮点数说明 float 单浮点数(单精度实型)。字长为4 个字节共32 位二进制数, 数的范围是3.4e-383.4e38。 double 双浮点数(双精度实型)。字长为 8个字节共 64 位二进制数,数的范围是1.7e-3081.7e308。 2、浮点型变量定义 可以用下列语句定义浮点型变量: float a, f; /*a, f被定义为单浮点型变量*/ double b; /*b被定义为双浮点型变量*/ 3、浮点常数表示 例如: 十进制数形式:+29.56, -56.33, 6.365 指数形式:2.1E5,-2.8E-2,-6.8e-18 注意: 1.浮点数均为有符号浮点数, 没有无符号浮点数。2. 浮点常数只有一种进制(十进制)。 3. 所有浮点常数都被默认为double,如果要指定其为单精度型,应该加后缀f,如:23.21f。 4. Turbo C默认格式输出浮点数时, 最多只保留小数点后六位5. 绝对值小于1的浮点数, 其小数点前面的零可以省略。如:0.22可写为.22, -0.0015E-3可写为-.0015E-3。注意:对于双精度浮点型变量,在调用格式化输入函数scanf()输入该类型变量的值时,必须使用的占位(格式)符是%Lf或 %lf (在 %与f之间的字符是英文字符L的小写,而不是数字1。所以,最好不要用小写英文字母l,而用大写的L ),不能用%f格式。但是,在调用格式化输出函数printf()输出双精度变量的值时,却可以使用%f格式。三、字符型 1.字符型说明(signed)char 有符号字符型。字长为1个字节共8位二进制数, 数的范围-128127。 unsigned char 无符号字符型。字长为1个字节共8位二进制数, 数的范围是0255。2、字符型变量定义加上不同的修饰符, 可以定义有符号和无符号两种类型的字符型变量, 例如: char a: /*a被定义为有符号字符变量*/ unsigned char l; /*l被定义为无符号字符变量*/ 字符在计算机中以其ASCII码方式表示, 其长度为1个字节, 有符号字符型数取值范围为-128127, 无符号字符型数到值范围是0255。因此在Turbo C语言中, 字符型数据在操作时将按整型数处理, 如果某个变量定义成char, 则表明该变量是有符号的, 即它将转换成有符号的整型数。Turbo C中规定对ASCII码值大于0x80的字符将被认为是负数。例如ASCII 值为0x8c的字符, 定义成char时, 被转换成十六进制的整数0xff8c 。 这是因当ASCII码值大于0x80时, 该字节的最高位为1, 计算机会认为该数为负数, 对于0x8c表示的数实际上是-74(8c的各位取反再加1), 而-74 转换成两字节整型数并在计算机中表示时就是0xff8c(对0074 各位取反再加1)。因此只有定义为 unsigned char 0x8c转换成整型数时才是8c。这一点在处理大于0x80的ASCII码字符时(例如汉字码)要特别注意。一般汉字均定义为unsigned char。 另外, 也可以定义一个字符型数组, 此时该数组表示一个字符串。 例如: char str10; 计算机在编译时, 将留出连续10个字符的空间, 即str0到str9共10个变量, 但只有前9个供用户使用。第10个str9用来存放字符串终止符NULL即0, 终止符是编编译程序自动加上的。3.字符型常数表示 能用符号表示的字符可直接用单引号括起来表示, 如a, 9, Z, 也可用该字符的ASCII码值表示, 例如十进制数85表示大写字母U, 十六进制数0x5d表示, 八进制数0102表示大写字母B。 一些不能用符号表示的控制符, 只能用ASCII码值来表示, 如十进制数10 表示换行, 十六进制数0x0D表示回车, 八进制数033表示Esc。 另外, Turbo C2.0中有些常用的字符用以下特殊规定来表示: 规定符 等价于 含义 f X0C 换页符号 r X0D 回车符号 t X09 Tab符号(制表符) n X0A 换行符号 X5C 符(反斜杠) X27 符(单引号) X22 符(双引号) 0 空字符 0nnn 八进制数 x 十六进制数对于字符串常量, 一般用双引号括起来表示, 如Hello Tom。 附:格式字符表示输出类型的格式字符 格式字符意义a 浮点数、十六进制数字和p-计数法(C99)A 浮点数、十六进制数字和p-计数法(C99)c 输出单个字符d 以十进制形式输出带符号整数(正数不输出符号)e 以指数形式输出单、双精度实数E 以指数形式输出单、双精度实数f 以小数形式输出单、双精度实数g 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大 于等于精度时使用G 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用i有符号十进制整数(与%d相同)o 以八进制形式输出无符号整数(不输出前缀O)p指针s 输出字符串x 以十六进制形式输出无符号整数(不输出前缀OX)X 以十六进制形式输出无符号整数(不输出前缀OX)u 以十进制形式输出无符号整数四、指针型 指针是一种特殊的数据类型, 在其它语言中一般没有。指针是指向变量的地址, 实质上指针就是存贮单元的地址。根据所指的变量类型不同,可以是整型指针(int *)、浮点型指针(float *)、字符型指针(char *)、结构指针(struct *)和联合指针(union *)五、无值型 无值型字节长度为0, 主要有两个用途: 一是明确地表示一个函数不返回任何值; 一是产生一个同一类型指针(可根据需要动态分配给其内存)。 例如: void *buffer; /*buffer被定义为无值型指针*/ 运算符一、赋值运算符赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符号为=。这里并不是等于的意思,只是赋值,等于用=表示。注意:赋值语句左边的变量在程序的其他地方必须要声明。得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。常数只能作为右值。例如:count=5;total1=total2=0;第一个赋值语句的意思是把5赋值给count。第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的。这样先total2=0,然后total1=total2; (不过(total1=total2)=0;是不可以的,因为先要算括号里面的,这时total1=total2是一个表达式,而赋值语句的左边是不允许表达式存在的)二、算术运算符在C语言中有两个单目和五个双目运算符。 符号 功能+ 单目正- 单目负* 乘法/ 除法% 取模+ 加法- 减法下面是一些赋值语句的例子, 在赋值运算符右侧的表达式中就使用了上面的算术运算符:Area=Height*Width;num=num1+num2/num3-num4;运算符也有个运算顺序问题,先算乘除再算加减。单目正和单目负最先运算。取模运算符(%)用于计算两个整数相除所得的余数。例如:a=7%4; 最终a的结果是3,因为7%4的余数是3。 而 b=7/4; 最终结果是1,因为b是它们的商。注意:当两个整数相除时,所得到的结果仍然是整数,没有小数部分。要想也得到小数部 分,可以这样写7.0/4或者7/4.0,也即把其中一个数变为非整数。如果想由一个实数得到它的整数部分,需要用强制类型转换。例如:a=(int) (7.0/4);因为7.0/4的值为1.75,如果在前面加上(int)就表示把结果强制转换成整型,这就得到了1。三、逻辑运算符逻辑运算符是根据表达式的值来返回真值或是假值。在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。 符号 功能& 逻辑与| 逻辑或! 逻辑非当表达式进行&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行|运算时,只要有一个为真,总的值就为真,只有当所有的都为假时,总的式子才为假(&的结果是真真为真,|的结果是假假为假)。逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。若原先为假,则逻辑非以后为真,若原先为真,则逻辑非以后为假。假设一个程序在同时满足条件a10和b=7时,必须执行某些操作。应使用关系运算符和逻辑运算符“与”来写这个条件的代码。用&表示“与”运算符,该条件代码如下: (a 右移 左移以操作数12为例。位运算符将数字12视为1100。位运算符将操作数视为位而不是数值。数值可以是任意进制的:十进制、八进制或十六进制。位运算符则将操作数转化为二进制,并相应地返回1或0。位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字。例如:表达式10&15表示(1010 & 1111),它将返回表示1010的值10。因为真真得真,或者是11得1,同位全是1结果也是1 表达式10|15表示(1010 | 1111),它将返回表示1111的值15。假假得假,全零得零。 表达式1015表示(1010 1111), 它将返回表示0101的值5。此时是同性相斥,相同的就为假。 表达式10表示(1010),它将返回表示0101的值5。左移运算: 左移运算符“”是双目运算符。其功能把“ ”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补0。例如: a”是双目运算符。其功能是把“ ”左边的运算数的各二进位全部右移若干位,“”右边的数指定移动的位数。例如:设 a=15,a2表示把000001111右移为00000011(十进制3)。 五、关系运算符关系运算符是对两个表达式进行比较,返回一个真/假值。 符号 功能 大于= 大于等于5 ,由于3不大于5,所以表达式最终取值为0,表示关系不成立。六、自增自减运算符自增运算符+和自减运算符-对变量的操作结果是增加1和减少1。例如:-Couter; Couter-; +Amount; Amount+;看这些例子里,运算符在前面还是在后面对本身的影响都是一样的,都是加1或者减1,但是当把他们作为其他表达式的一部分,两者就有区别了。运算符放在变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后面,那么自增自减运算是在变量参加表达式的运算后再运算。例如:num1=4; num2=8; a=+num1; b=num2+;a=+num1;这总的来看是一个赋值,把+num1的值赋给a,因为自增运算符在变量的前面,所以num1先自增加1变为5,然后赋值给a,最终a也为5。b=num2+;这是把num2+的值赋给b,因为自增运算符在变量的后面,所以先把num2赋值给b,b应该为8,然后num2自增加1变为9。七、复合赋值运算符复合赋值运算符有下列这些: 符号 功能+= 加法赋值-= 减法赋值*= 乘法赋值/= 除法赋值%= 模运算赋值= 右移赋值&= 位逻辑与赋值|= 位逻辑或赋值= 位逻辑异或赋值例如:Total=Total+3; 可以写成Total+=3;八、条件运算符条件运算符( ? : )是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回两外两个表达式中的一个。?:在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。例如:a=(b0)?b:-b; 当b0时,a=b;当b不大于0时,a=-b;这就是条件表达式。其实上面的意思就是 把b的绝对值赋值给a。九、逗号运算符在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。 假设b=2,c=7,d=5, a1=(+b,c-,d+3); a2=+b,c-,d+3; 对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a=8。对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=+b、c-、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。十、优先级和结合性优先级和结合性是运算符两个重要的特性,结合性又称为计算顺序,它决定组成表达式的各个部分是否参与计算以及什么时候计算。下面是C语言中所使用的运算符的优先级和结合性: 优先级 运算符 结合性 1 () - . 自左向右2 ! + - + - * & sizeof 自右向左3 * / % 自左向右4 + - 自左向右5 自左向右6 = 自左向右7 = != 自左向右8 & 自左向右9 自左向右10 | 自左向右11 & 自左向右12 | 自左向右13 ? : 自右向左 14 = += -= *= /= %= &= = |= = 自右向左 15 , 自左向右附:运算符优先级等级口诀:圆方括号、箭头一句号, 自增自减非反负、针强地址长度, 乘除,加减,再移位,小等大等、等等不等,八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。(其中“,”号为一个等级分段)3种基本结构语句一、顺序结构1、赋值语句:在赋值表达式的后面,加上一个语句结束符“;”。 例如:int x=5;2、复合语句:用一对花括号“ ”把多条语句括起来。注意:复合语句内的每个语句都要有分号,在复合语句的右括号“”外不能加分号例如:if (ab) t=a;a=b;b=t;3、空语句:只有一个分号组成的语句,即“;”。空语句是什么也不执行的语句。在有的循环中,循环体什么都不做,就用空语句来表示。 例如: while(getchar()!=n) ; 本语句的功能是:只要从键盘输入的字符不是回车则重新输入。这里的循环体是空语句。4、函数调用语句:C语言本身并不提供输入/输出操作的语句,C语言程序中的输入和输出是用一组库函数来实现的。在使用C语言库函数时要用到文件,因此源文件开头应有以下预编译命令: #include 或 #include“stdio.h”(1)字符输入函数:getchar() 调用形式:getchar() 函数功能:使程序处于等待用户从键盘进行输入的状态。等待输入直到按回车才结束, 回车前的所有输入字符都会逐个显示在屏幕上,但只有第一个字符作为函数的返回值。该函数没有参数。例如: #include main() char ch; /*说明一个字符型变量*/ch=getchar(); /*等待从键盘输入一个字符*/ printf(“ch=%cn”,ch); /*打印输出变量里的内容*/ (2)字符输入函数:putchar() 调用形式:getchar(c) /c为该函数的参数/ 函数功能:将字符变量c里的内容或字符常量在显示器上显示(即输出) 例如: #include main() char ch; /*说明一个字符型变量*/ch=getchar(); /*等待从键盘输入一个字符*/ putchar(ch); /*将ch中的内容显示输出*/ (3)格式输入函数:scanf() 调用格式: scanf(, );注意:1、所有数据从键盘输入完毕后,必须以回车换行作为整个数据输入的结束。 2、中给出的必须是一个变量地址,所以在变量名前要加上 取地址符&。对于字符串数组或字符串指针变量, 由于数组名和指针变量名本身就是地址, 因此使用scanf()函数时, 不需要在它们前面加上&。 3、中给出的格式说明个数(即“%”个数),必须与输入地址列表中所列变量的地址的个数想一致,因为两者是一一对应的。(4)格式输出函数:printf() 调用格式:printf(, ); 注意:1、格式控制串必须在双引号内。 2、格式控制字符串内的格式说明个数应与输出变量表里所列的变量个数吻合,类型一致。 3、对输出变量表里所列诸变量(表达式),其计算顺序是自右向左进行的。所以要注意右边的参数值是否会影响到左边的参数取值。printf()格式字符: (scanf()与printf()函数中的格式说明符基本相同)格式字符 说明 %d 十进制有符号整数 %u 十进制无符号整数 %f 十进制double型 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %x, %X 无符号以十六进制表示的整数 %0 无符号以八进制表示的整数 %g 自动选择合适的表示法 说明: (1). 可以在%和字母之间插进数字表示最大场宽。 例如: %3d 表示输出3位整型数, 不够3位右对齐。 %9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6, 小数点占一位, 不够9位右对齐。 %8s 表示输出8个字符的字符串, 不够8个字符右对齐。 如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。 但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出; 若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。 另外, 若想在输出值前加一些0, 就应在场宽项前加个0。 例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度 为4位。 如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度, 小数点前的数字代表最小宽度。 例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则 第9个字符以后的内容将被删除。 (2). 可以在%和字母之间加小写字母l, 表示输出的是长型数。 例如: %ld 表示输出long整数 %lf 表示输出double浮点数 (3). 可以控制输出左对齐或右对齐, 即在%和字母之间加入一个- 号可 说明输出为左对齐, 否则为右对齐。 例如: %-7d 表示输出7位整数左对齐 %-10s 表示输出10个字符左对齐二、选择结构 1、if单分支选择语句 一般格式是:if() ; 功能:在程序执行过程中遇到if时,若圆括号里的取值为非0(即条件成立),则执行语句;否则(即是值为0,条件不成立)就不执行if中的,而去执行该单分支选择语句的后续语句。2、if-else双分支选择语句 一般格式是:if() ; else ; 功能:在程序中遇到if时,若圆括号里的取值为非0(条件成立),则执行;否则执行。无论执行的是还是,随后都去执行后续语句。 例如:输入一个整数,判断奇偶。 main() int n; clrscr(); printf(Input a numbern); scanf(%d,&n); if(n%2=0) printf(The number is evenn); else printf(The number is oddn); 3、if-else if多分支选择语句 一般格式是:if() ; else if() ; else if() ; else ; 功能:在程序中遇到if时,若圆括号里的条件取值为非0(条件成立),则执行;否则去判定else if 后面圆括号里,如果值为非0,则执行;否则去判定下一个else if后面圆括号里,如果值为非0,则执行;如此等等。如果、都为0(不成立),那么执行else后面的。在执行了或或或后,去执行后续语句。例如:求解符号函数。 main() int x,sign; clrscr(); printf(Please input a numbern); scanf(%d,&x); if(x0) sign=1; else if(x=0) sign=0; else sign=-1; printf(The sign is %dn,sign);注意:if语句的嵌套结构里,else总是与前面最近的并且没有与其他else匹配的if相匹配,所以在一个if嵌套结构中,if和else的个数不一定相等。4、switch多分支选择语句(开关分支结构) 一般格式是:switch() case 常量值1: ; break; case 常量值2: ; break; case 常量值n-1: ; break; default: ; break; 功能:先求switch后圆括号内的表达式值,然后用该值逐个去与case后的常量值做比较。当找到想匹配者时,就执行其后的语句。随之继续执行后面case里的语句。只有在对所有case后的常量值的比较都找不到匹配者时,才去执行default(如果有的话)后的语句。在执行匹配case后的语句中,若遇到break语句,则不再继续后面的执行,而是立即跳出switch语句去执行switch的后续语句。 注意:1.switch后面的表达式一定要用圆括号括住,其取值必须是整数或字符型的。 2.各case后面的常量值必须是整数或一个字符常量,并且它们不应该相同。 3.执行完case后面的语句,如果没有遇到break,那么就会自动去执行下一个case后面的语句,而不去判别与其常量值是否匹配。 4.default位置任意,是前面所有case皆不满足时的入口;若无default且无匹配常量表达式,则不执行任何操作。例如:根据考试成绩的等级打印百分制分数段。main() char grade; clrscr(); printf(input the grade:); scanf(%c,&grade); switch(grade) case A: printf(85100n); break; case B: printf(7084n); break; case C: printf(6069n); break; case D: printf(60n); break; default: printf(errorn); 三、循环结构 1、while循环语句 一般结构是:while() ; 功能:在程序中遇到while时,首先检查圆括号里的是否成立。若成立,就去执行一次(通常称为循环体),然后再去检查是否成立,以此形成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园应急知识培训课件作文
- 债务规划面试题及答案
- 教师业务考试题及答案
- 云南b类面试题及答案
- 砌砖工程试题及答案
- 幼儿英语考试试题及答案
- 硫酸镁考试题及答案
- 2025年广州航海学院招聘事业编制人员考试笔试试题(含答案)
- 校内安全知识培训课件
- 2025年佛山市高明区教师发展中心选聘考试笔试试题(含答案)
- DB37-T 4687-2023 社会心理服务中心(站、室)建设运行规范
- 激光打印机维修培训资料全
- 耳鼻喉科患者的心理护理与干预策略
- 30道医院妇产科医生岗位高频面试问题附考察点及参考回答
- 设计单位工程质量检查报告(合格证明书)
- 机动车驾驶员培训备案表
- (完整word版)中国银行交易流水明细清单模版
- 怎么点评施工方案好坏
- 公司客户信息管理制度
- 食品安全责任保险课件
- 塑胶模具类中英文对照专业术语
评论
0/150
提交评论