1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言基础教程读书笔记2(第二章常量 变量 类型转换)

C语言基础教程读书笔记2(第二章常量 变量 类型转换)

时间:2022-05-10 03:43:55

相关推荐

C语言基础教程读书笔记2(第二章常量 变量 类型转换)

第二章常量、变量、类型转换<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />1常量1) 数字常量:(包括整型常量(十/八/十六进制)、浮点型常量)整型常量(八进制前缀加0;十六进制前缀加0x);根据长度整型常量又可分为(长整型(后缀加L)、短整型、无符号型(后缀加u))下面我们来看一下这个程序:#include <stdio.h>int main(){printf("%d\t%x\t%o\n",29,29,29);printf("%d\t%x\t%o\n",025,025,025);printf("%d\t%x\t%o\n",0x1a,0x1a,0x1a);printf("%u\t%1d\n",47675u,742611);getchar();}结果为:<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />我们来解释一下:\n表示换行;%d表示按照十进制输出;\t表示水平制表;%x表示按照十六进制输出;%o表示按照八进制输出;%u表示按照无符号整数输出;%1d表示按照长整数输出(1用于说明符d,o,x之前表示长整数;用于e,f,g之前表示双精度浮点数)。浮点常量(实型常量)可表示为(十进制小数形式和指数形式)十进制小数合法表示有(0.567 567.0 .567 567.)指数表示形式(该表示形式必须包含字母E/e,在之母e前必须有数字,在字母e后得数字必须为整数(正负皆可))。格式如下:{整数部分}.{小数部分}e{指数部分}(整数部分省略时,但小数点和小数部分必须有。有整数部分时,可以省略小数点和小数部分。)我们来看这个程序:#include <stdio.h>int main(){printf("%f\t%e\t%g\n",12e3,12.3,12.3);printf("%f\t%e\t%g\n",12.3456,12.3456,12.3456);printf("%f\t%.2f\t%f\n",12.3,12.345,123);getchar();}结果为:我们来解释一下:\n表示换行;%f表示按照浮点数(小数型)输出;\t表示水平制表;%e表示按照浮点数(指数型)输出;%g表示按照e和f中较短的一种输出;%2f表示按照长整数输出(2用于说明符d,o,x之前表示长整数;用于e,f,g之前表示双精度浮点数)。2) 字符常量(字符常量、字符串常量)字符常量:由单引号括起来的一个字符组成。(字符常量是具有数值的,即ASCII码值。可参与加减运算。)我们来看下面一个程序:#include <stdio.h>int main(){printf("%c,%d\n",67,'m');printf("%c,%c,%c\n",'a','\b','b');printf("%c,%c,%c\n",'a','\r','b');printf("%c%c",'\a','\007');getchar();}输出结果为:很奇怪啊,应该输出四行啊。怎么只有三行?我们来解释一下:第一行 %c表示输出单个字符,大写c的ASCII码值为67所以输出C;%d表示按照十进制输出,字符m的ASCII码值为109;第二行因为%c按照字符输出所以‘a’,‘b’就输出a,b‘\b’表示退格,在输出退格后屏幕上输出a,接着输出b第三行‘\r’表示回车,在前面输出a,后,执行‘\r’光标移到该行首列,即a处,这时输出控制字符创的第二个逗号,将字符a改为逗号,在输出b。第四行‘\a’是机器的鸣铃,‘\007’还是鸣铃。字符串常量(由“”括起来的字符序列。)字符实际上是一个整型数,字符串实质上是个地址值3) 符号常量(用一个标识符来代表一个常量)符号常量在使用之前要先定义,格式如下:#define {符号常量名}(常量)符号常量名长用大写举个例子:#include <stdio.h>#define PI 3.1415926#define R 2int main(){double zhouchang,area;zhouchang=2.0*PI*R;area=PI*R*R;printf("zhouchang=%1f,area=%1f\n",zhouchang,area);getchar();}结果如下:2变量(程序中值发生变化的量)(三要素:名称,类型,值。)名称:变量必须先定义后使用,定义或说明变量时,要给出该变量的名字(大小写字母都行,应考虑变量的含义和使用目的)。类型:(编译时系统根据变量类型分配相应的内存单元。)1) 基本数据类型(整型(整型,长整型,短整型),浮点型(单精度浮点型,双精度浮点型),字符型)如:基本数据类型定义格式如下:int a,b,c;2) 构造数据类型(由若干个相同或不同的基本数据类型变量按照不同规律组合成的。)如数组,结构,联合,枚举。3) 存储类(自动存储,寄存器存储,外部存储,静态存储)。值:(变量要被赋值,或赋初值才能被使用。)1) 赋值:将一个数值赋给变量,直到下次再被赋值为止。2) 赋初值:在定义或说明变量时,将一个数值送给变量的。 float占4个字节,double占8个字节。3数组(数目固定,类型相同的若干变量的有序集合)1)数组定义格式如下:{类型说明符}{数组名}【{常量表达式1}】【{常量表达式2}】。。。。数组元素的表示如下:{数组名}【{下标1}】【{下标2}】。。。(数组下标从0开始。举个例子:int a[3] 表示a数组中有3个元素:a[0],a[1],a[2]。3) 数组的赋值赋初值格式如下:Static int a[5]={5,4,3,2,1} 其中(a[0]=5,a[1]=4,a[2]=3,a[3]=2,a[4]=1)赋值格式如下:int a[5],b[1][2];a[0]=a[1]=a[2]=1;a[3]=a[4]=0;b[0][0]=3;b[0][1]=2;b[1][0]=9;b[1][1]=8;b[1][2]=4;是不是有点麻烦?其实还可以采用循环复制的方法:for(i=0;i<6;i++)a[i]=i+1;这表示对a的6个元素分别赋值1,2,3,4,5,6。注意!一下赋值方式是错误的:int a[5];a={1,2,3,4,5};下面我们来看一个二维数组的赋值(这个比较常用)#include <stdio.h>int main(){int i,s=0;static int b[3][3]={{6},{7,8}};for(i=0;i<3;i++)b[2][i]=i+1;for(i=0;i<3;i++)s+=b[i][i];printf("%d\n",s);getchar();}输出结果如下: 我们来分析一下:首先我们把b[3][3]每个元素都列出来:(b[3][3]={{6},{7,8}}其实就是b[3][3]={{6,0,0},{7,8,0},{0,0,0}}b[0][0]=6,b[0][1]=0,b[0][2]=0b[1][0]=7,b[1][1]=8,b[1][2]=0b[2][0]=0,b[2][1]=0,b[2][2]=0)for(i=0;i<3;i++) #执行三次循环赋值;b[2][0]=1,b[2][1]=2,b[2][2]=3for(i=0;i<3;i++)s+=b[i][i]; #把b[0][0]+b[1][1]+[2][2]的值赋给ss=0+6+8+3=17)数组除了有数字数组外,还有字符数组(数组内各元素是char类型的),定义和数字数组定义相同。格式如下:static char m[5]={‘a’,’b’,’c’,’d’,’\0’};等价于static char m[]=”abcd”;我们来看下面两条语句:Static char x[3]={‘a’,’b’,’\0’};Static char y[3]={‘a’,’b’,’c’};数组x中存放的是一个字符串“ab“,而数组y中存放的不是字符串,而是三个字符a,b,c因为数组y的三个元素中没有结束符’\0’。(如果将一个字符创常量在定义数组时赋初值给该数组,则该数组将存放所赋予的字符串,这时系统将自动给数组加一个’\0’作为结束符。注意字符串有效数字加1后小于等于字符数组的元素个数。总结一下:1) 字符串的输入方法可以单个字符输入;2) 字符串的输出方法可以单个字符输出,使用格式符%c,最终形成字符串形式,也可以使用%s一次输出字符串;3) 使用格式符%c输出字符时,对应参数是数组元素名,使用格式符%s输出一个字符串时,对应参数是数组名,实际上是一个地址值;4) 在使用格式符%s输出字符串时,实际上是从给定的地址开始逐一输出其存放的字符直到遇到’\0’为止。4类型转换(自动转换,强制转换)1)自动转换是根据规则自动进行转换的。char和short转换成intfloat转换成doubleint->unsigned->long->double2)强制转换 格式如下:({类型说明符})(表达式)(double)(a+5)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。