您好,欢迎访问三七文档
C语言中的符号运算符的种类C语言的运算符可分为以下几类:1.算术运算符用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(–)共七种。2.关系运算符用于比较运算。包括大于()、小于()、等于(==)、大于等于(=)、小于等于(=)和不等于(!=)六种。3.逻辑运算符用于逻辑运算。包括与(&&)、或(||)、非(!)三种。4.位操作运算符参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移()、右移()六种。5.赋值运算符用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,=,=)三类共十一种。&=例如:a&=0x11等价于a=a&0x11!=a!=0x11等价于a=a!0x11=例如:a=0x11等价于a=a0x11。=a=0x11等价于a=a0x11。^=例如:a^=0x11等价于a=a^0x11。混合类型位运算规则6.条件运算符这是一个三目运算符,用于条件求值(?:)。7.逗号运算符用于把若干表达式组合成一个表达式(,)。8.指针运算符用于取内容(*)和取地址(&)二种运算。9.求字节数运算符用于计算数据类型所占的字节数(sizeof)。10.特殊运算符有括号(),下标[],成员(-,.)等几种。1.C的数据类型基本类型,构造类型,指针类型,空类型2.基本类型的分类及特点类型说明符字节数值范围字符型char1C字符集基本整型int2-32768~32767短整型shortint2-32768~32767长整型longint4-214783648~214783647无符号型unsigned20~65535无符号长整型unsignedlong40~4294967295单精度实型float43/4E-38~3/4E+38双精度实型double81/7E-308~1/7E+3083.常量后缀L或l长整型U或u无符号数F或f浮点数4.常量类型整数,长整数,无符号数,浮点数,字符,字符串,符号常数,转义字符。5.数据类型转换·自动转换在不同类型数据的混合运算中,由系统自动实现转换,由少字节类型向多字节类型转换。不同类型的量相互赋值时也由系统自动进行转换,把赋值号右边的类型转换为左边的类型。·强制转换由强制转换运算符完成转换。6.运算符优先级和结合性一般而言,单目运算符优先级较高,赋值运算符优先级低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性,单目运算符、三目运算符、赋值7.表达式表达式是由运算符连接常量、变量、函数所组成的式子。每个表达式都有一个值和类型。表达式求值按运算符的优先级和结合性所规定的顺序进行。表示输出类型的格式字符格式字符意义d以十进制形式输出带符号整数(正数不输出符号)o以八进制形式输出无符号整数(不输出前缀O)x以十六进制形式输出无符号整数(不输出前缀OX)u以十进制形式输出无符号整数f以小数形式输出单、双精度实数e以指数形式输出单、双精度实数g以%f%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串标志字符为-、+、#、空格四种,其意义下表所示:标志格式字符标志意义-结果左对齐,右边填空格+输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号#对c,s,d,u类无影响;对o类,在输出时加前缀o对x类,在输出时加前缀0x;对e,g,f类当结果有小数时才给出小数点格式字符串格式字符串的一般形式为:%[*][输入数据宽度][长度]类型其中有方括号[]的项为任选项。各项的意义如下:1.类型表示输入数据的类型,其格式符和意义下表所示。格式字符意义d输入十进制整数o输入八进制整数x输入十六进制整数u输入无符号十进制整数f或e输入实型数(用小数形式或指数形式)c输入单个字符s输入字符串转义字符转义字符是一种特殊的字符常量。转义字符以反斜线”\”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,在前面各例题printf函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。常用的转义字符及其含义转义字符转义字符的意义\n回车换行\t横向跳到下一制表位置\v竖向跳格\b退格\r回车\f走纸换页\\反斜线符”\”\’单引号符\a鸣铃\ddd1~3位八进制数所代表的字符\xhh1~2位十六进制数所代表的字符广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表2.2中的\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如\101表示字?quot;A”,\102表示字母”B”,\134表示反斜线,\XOA表示换行等。转义字符的使用在C语言中,对变量的存储类型说明有以下四种:auto自动变量register寄存器变量extern外部变量static静态变量自动变量和寄存器变量属于动态存储方式,外部变量和静态变量属于静态存储方式。在介绍了变量的存储类型之后,可以知道对一个变量的说明不仅应说明其数据类型,还应说明其存储类型。因此变量说明的完整形式应为:存储类型说明符数据类型说明符变量名,变量名…;例如:staticinta,b;说明a,b为静态类型变量autocharc1,c2;说明c1,c2为自动字符变量staticinta[5]={1,2,3,4,5};说明a为静整型数组externintx,y;说明x,y为外部整型变量与指针有关的各种说明和意义见下表。int*p;p为指向整型量的指针变量int*p[n];p为指针数组,由n个指向整型量的指针元素组成。int(*p)[n];p为指向整型二维数组的指针变量,二维数组的列数为nint*p()p为返回指针值的函数,该指针指向整型量int(*p)()p为指向函数的指针,该函数返回整型量int**pp为一个指向另一指针的指针变量,该指针指向一个整型量。指针变量的赋值p可以有以下两种方式:(1)指针变量初始化的方法inta;int*p=&a;(2)赋值语句的方法inta;int*p;p=&a;(1)取地址运算符&(2)取内容运算符*按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;0&1=0;1&0=0;1&1=1;即:两位同时为“1”,结果才为“1”,否则为0例如:3&5即00000011&00000101=00000001因此,3&5的值得1。另,负数按补码形式参加按位与运算。“与运算”的特殊用途:(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。(2)取一个数中指定位方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。例:设X=10101110,取X的低4位,用X&00001111=00001110即可得到;还可用来取X的2、4、6位。按位或运算符(|)参加运算的两个对象,按二进制位进行“或”运算。运算规则:0|0=0;0|1=1;1|0=1;1|1=1;即:参加运算的两个对象只要有一个为1,其值为1。例如:3|5即00000011|00000101=00000111因此,3|5的值得7。另,负数按补码形式参加按位或运算。“或运算”特殊作用:(1)常用来对一个数据的某些位置1。方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。例:将X=10100000的低4位置1,用X|00001111=10101111即可得到。异或运算符(^)参加运算的两个数据,按二进制位进行“异或”运算。运算规则:0^0=0;0^1=1;1^0=1;1^1=0;即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。“异或运算”的特殊作用:(1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。例:X=10101110,使X低4位翻转,用X^00001111=10100001即可得到。(2)与0相异或,保留原值,X^00000000=10101110。从上面的例题可以清楚的看到这一点。取反运算符(~)参加运算的一个数据,按二进制位进行“取反”运算。运算规则:~1=0;~0=1;即:对一个二进制数按位取反,即将0变1,1变0。使一个数的最低位为零,可以表示为:a&~1。~1的值为1111111111111110,再按“与”运算,最低位一定为0。因为“~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。左移运算符()将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。例:a=a2将a的二进制位左移2位,右补0,左移1位后a=a*2;若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。右移运算符()将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。操作数每右移一位,相当于该数除以2。例如:a=a2将a的二进制位右移2位,左补0or补1得看被移数是正还是负。运算符把expression1的所有位向右移expression2指定的位数。expression1的符号位被用来填充右移后左边空出来的位。向右移出的位被丢弃。例如,下面的代码被求值后,temp的值是-4:-14(即二进制的11110010)右移两位等于-4(即二进制的11111100)。vartemp=-142无符号右移运算符()运算符把expression1的各个位向右移expression2指定的位数。右移后左边空出的位用零来填充。移出右边的位被丢弃。例如:vartemp=-142变量temp的值为-14(即二进制的11111111111111111111111111110010),向右移两位后等于1073741820(即二进制的00111111111111111111111111111100)。复合赋值运算符位运算符与赋值运算符结合,组成新的复合赋值运算符,它们是:&=例:a&=b相当于a=a&b|=例:a|=b相当于a=a|b=例:a=b相当于a=ab=例:a=b相当于a=ab^=例:a^=b相当于a=a^b运算规则:和前面讲的复合赋值运算符的运算规则相似。不同长度的数据进行位运算如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。以“与”运算为例说明如下:我们知道在C语言中long型占4个字节,int型占2个字节,如果一个long型数据与一个int型数据进行“与”运算,右端对齐后,左边不足的位依下面三种情况补足,(1)如果整型数据为正数,左边补16个0。(2)如果整型数据为负数,左边补16个1。(3)如果整形数据为无符号数,左边也补16个0。如:longa=123;intb=1;计算a&b。如:longa=123;intb=-1;计算a&b。如:longa=123;unsignedintb=1;计算a&b。
本文标题:C语言中的符号
链接地址:https://www.777doc.com/doc-5555818 .html