您好,欢迎访问三七文档
C语言数据类型一、整型1、整型数说明加上不同的修饰符,整型数有以下几种类型;(signed)shortint有符号短整型数说明。简写为short或int,字长为2字节共16位二进制数,数的范围是-32768~32767。(signed)longint有符号长整型数说明。简写为long,字长为4字节共32位二进制数,数的范围是-2147483648~2147483647。unsignedshortint无符号短整型数说明。简写为unsignedint,字长为2字节共16位二进制数,数的范围是0~65535。unsignedlongint无符号长整型数说明。简写为unsignedlong,字长为4字节共32位二进制数,数的范围是0~4294967295。2、整型变量定义可以用下列语句定义整型变量inta,b;/*a、b被定义为有符号短整型变量*/unsignedlongc;/*c被定义为无符号长整型变量*/3、整型常数表示按不同的进制区分,整型常数有三种表示方法:十进制数:以非0开始的数如:220,-560,45900八进制数:以0开始的数如:06;0106十六进制数:以0x开始的数如:0x0D,0xFF,0x4e另外,可在整型常数后添加一个L或l字母表示该数为长整型数,如22L,0773L,0x34l。二、浮点型(实型)1、浮点数说明float单浮点数(单精度实型)。字长为4个字节共32位二进制数,数的范围是3.4e-38~3.4e38。double双浮点数(双精度实型)。字长为8个字节共64位二进制数,数的范围是1.7e-308~1.7e308。2、浮点型变量定义可以用下列语句定义浮点型变量:floata,f;/*a,f被定义为单浮点型变量*/doubleb;/*b被定义为双浮点型变量*/3、浮点常数表示例如:十进制数形式:+29.56,-56.33,6.365指数形式:2.1E5,-2.8E-2,-6.8e-18注意:1.浮点数均为有符号浮点数,没有无符号浮点数。2.浮点常数只有一种进制(十进制)。3.所有浮点常数都被默认为double,如果要指定其为单精度型,应该加后缀f,如:23.21f。4.TurboC默认格式输出浮点数时,最多只保留小数点后六位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位二进制数,数的范围-128~127。unsignedchar无符号字符型。字长为1个字节共8位二进制数,数的范围是0~255。2、字符型变量定义加上不同的修饰符,可以定义有符号和无符号两种类型的字符型变量,例如:chara:/*a被定义为有符号字符变量*/unsignedcharl;/*l被定义为无符号字符变量*/字符在计算机中以其ASCII码方式表示,其长度为1个字节,有符号字符型数取值范围为-128~127,无符号字符型数到值范围是0~255。因此在TurboC语言中,字符型数据在操作时将按整型数处理,如果某个变量定义成char,则表明该变量是有符号的,即它将转换成有符号的整型数。TurboC中规定对ASCII码值大于0x80的字符将被认为是负数。例如ASCII值为0x8c的字符,定义成char时,被转换成十六进制的整数0xff8c。这是因当ASCII码值大于0x80时,该字节的最高位为1,计算机会认为该数为负数,对于0x8c表示的数实际上是-74(8c的各位取反再加1),而-74转换成两字节整型数并在计算机中表示时就是0xff8c(对0074各位取反再加1)。因此只有定义为unsignedchar0x8c转换成整型数时才是8c。这一点在处理大于0x80的ASCII码字符时(例如汉字码)要特别注意。一般汉字均定义为unsignedchar。另外,也可以定义一个字符型数组,此时该数组表示一个字符串。例如:charstr[10];计算机在编译时,将留出连续10个字符的空间,即str[0]到str[9]共10个变量,但只有前9个供用户使用。第10个str[9]用来存放字符串终止符NULL即\0,终止符是编编译程序自动加上的。3.字符型常数表示能用符号表示的字符可直接用单引号括起来表示,如'a','9','Z',也可用该字符的ASCII码值表示,例如十进制数85表示大写字母'U',十六进制数0x5d表示']',八进制数0102表示大写字母'B'。一些不能用符号表示的控制符,只能用ASCII码值来表示,如十进制数10表示换行,十六进制数0x0D表示回车,八进制数033表示Esc。另外,TurboC2.0中有些常用的字符用以下特殊规定来表示:规定符等价于含义'\f''\X0C'换页符号'\r''\X0D'回车符号'\t''\X09'Tab符号(制表符)'\n''\X0A'换行符号'\\''\X5C'\符(反斜杠)'\'''\X27''符(单引号)'\''\X22'符(双引号)'\0'空字符'\0nnn'八进制数'\x'十六进制数对于字符串常量,一般用双引号括起来表示,如HelloTom。附:格式字符表示输出类型的格式字符格式字符意义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时,必须执行某些操作。应使用关系运算符和逻辑运算符“与”来写这个条件的代码。用&&表示“与”运算符,该条件代码如下:(a10)&&(b==7);还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。例如:a=2,b=1;a||b-1;因为a=2,为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。四、位运算符符号功能&位逻辑与|位逻辑或^位逻辑异或~位逻辑反右移左移以操作数12为例。位运算符将数字12视为1100。位运算符将操作数视为位而不是数值。数值可以是任意进制的:十进制、八进制或十六进制。位运算符则将操作数转化为二进制,并相应地返回1或0。位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字。例如:表达式10&15表示(1010&1111),它将返回表示1010的值10。因为真真得真,或者是11得1,同位全是1结果也是1表达式10|15表示(1010|1111),它将返回表示1111的值15。假假得假,全零得零。表达式10^15表示(1010^1111),它将返回表示0101的值5。此时是同性相斥,相同的就为假。表达式~10表示(~1010),它将返回表示0101的值5。左移运算:左移运算符“”是双目运算符。其功能把“”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补0。例如:a4指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。右移运算:右移运算符“”是双目运算符。其功能是把“”左边的运算数的各二进位全部右移若干位,“”右边的数指定移动的位数。例如:设a=15,a2表示把000001111右移为00000011(十进制3)。五、关系运算符关系运算符是对两个表达式进行比较,返回一个真/假值。符号功能大于小于=大于等于=小于等于==等于!=不等于例如:35,由于3不大于5,所以表达式最终取值为0,表示关系不成立。六、自增自减运算符自增运算符++和自减运算符--对变量的操作结果是增加1和减少1。例如:--Couter;Couter--;++Amount;Amount++;看这些例子里,运算符在前面还是在后面对本身的影响都是一样的,都是加1或者减1,但是当把他们作为其他表达式的一部分,两者就有区别了。运算符放在变量前面,那
本文标题:c语言基本知识
链接地址:https://www.777doc.com/doc-2907890 .html