C语言的特殊符号

Python049

C语言的特殊符号,第1张

C语言中的符号运算符的种类C语言的运算符可分为以下几类:1.算术运算符用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(–)共七种。2.关系运算符用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。3.逻辑运算符用于逻辑运算。包括与(&&)、或(||)、非(!)三种。4.位操作运算符参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。5.赋值运算符用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。6.条件运算符这是一个三目运算符,用于条件求值(?:)。7.逗号运算符用于把若干表达式组合成一个表达式(,)。8.指针运算符用于取内容(*)和取地址(&)二种运算。9.求字节数运算符用于计算数据类型所占的字节数(sizeof)。10.特殊运算符有括号(),下标[],成员(→,.)等几种。1.C的数据类型基本类型,构造类型,指针类型,空类型2.基本类型的分类及特点类型说明符 字节 数值范围字符型char1C字符集基本整型int 2-32768~32767短整型short int 2 -32768~32767长整型 long int 4 -214783648~214783647无符号型 unsigned20~65535无符号长整型 unsigned long 4 0~4294967295单精度实型 float4 3/4E-38~3/4E+38双精度实型 double 8 1/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 鸣铃\ddd 1~3位八进制数所代表的字符\xhh 1~2位十六进制数所代表的字符广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表2.2中的\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如\101表示字?quotA” ,\102表示字母”B”,\134表示反斜线,\XOA表示换行等。转义字符的使用在C语言中,对变量的存储类型说明有以下四种:auto 自动变量register 寄存器变量extern外部变量static静态变量 自动变量和寄存器变量属于动态存储方式, 外部变量和静态变量属于静态存储方式。在介绍了变量的存储类型之后, 可以知道对一个变量的说明不仅应说明其数据类型,还应说明其存储类型。 因此变量说明的完整形式应为: 存储类型说明符 数据类型说明符 变量名,变量名…; 例如:static int a,b 说明a,b为静态类型变量auto char c1,c2 说明c1,c2为自动字符变量static int a[5]={1,2,3,4,5} 说明a为静整型数组extern int x,y 说明x,y为外部整型变量与指针有关的各种说明和意义见下表。int *pp为指向整型量的指针变量int *p[n] p为指针数组,由n个指向整型量的指针元素组成。int (*p)[n] p为指向整型二维数组的指针变量,二维数组的列数为nint *p()p为返回指针值的函数,该指针指向整型量int (*p)() p为指向函数的指针,该函数返回整型量int **p p为一个指向另一指针的指针变量,该指针指向一个整型量。 指针变量的赋值p可以有以下两种方式:(1)指针变量初始化的方法 int aint *p=&a(2)赋值语句的方法 int aint *pp=&a(1)取地址运算符&(2)取内容运算符*

&: 在C语言中有两种意思,一种是取地址符,是单目运算符;另一种是位运算符,表示“按位与”,是双目运算符。|: 是位运算符,表示“按位或”。

资料扩展

1、符号 &和 | 这两个运算符都是二进制的按位操作符。

&: 二进制“与”(都为1时,结果是1,否则是0。),比如:1010 &1011 = 1010,1010 &1000 = 1000。

|: 二进制“或”(有1时,结果是1,都是0时,结果为0。),比如:1010 | 1011 = 1011,1010 | 1000 = 1010。

2、位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字。

例如:

表达式10&15表示(1010 &1111),它将返回表示1010的值10。因为真真得真,或者是11得1,同位全是1结果也是1。

表达式10|15表示(1010 | 1111),它将返回表示1111的值15。假假得假。全零得零。

3、C语言中的符号分为10类:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符。

4、位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

expr :表达式lvalue:左值得(书上是:标示非常量的表达式)type:类型class_name:类名member:成员名pointer:指针表达式—————————————————————————————————————————————————————————优先性级:1-----------------------------------------------------------------------------------------------------------------------------------名称:例子:作用域解析class_name::member作用域解析namespace_name::member全局 ::name全局 ::qualifide-name—————————————————————————————————————————————————————————优先性级:2-----------------------------------------------------------------------------------------------------------------------------------成员选择 object.member成员选择 pointer->member下标 pointer[expr]函数调用 expr(expr_list)值构造type(expr_list)后增量lvalue++后减量lvalue--类型识别 typeid(type)运行时类型识别typeid(expr)运行时检查的转换 dynamic_cast<type>(expr)编译时检查的转换 static_cast<type>(expr)不检查检查的转换 reinterpret_cast<type>(expr)const转换 const_cast<type>(expr)—————————————————————————————————————————————————————————优先性级:3-----------------------------------------------------------------------------------------------------------------------------------对象的大小sizeof expr类型的大小sizeof(type)前增量++lvalue后增量 - -lvalue补~expr非!expr一元负号-expr一元正号+expr地址 &lvalue间接 * expr建立(分配) new type建立(分配并初始化) new type(expr-list)建立(放置) new (expr-list)type建立(放置并初始化) new (expr-list)type(expr-list)销毁 delete pointer销毁数组 delete [] pointer强制 (type)expr—————————————————————————————————————————————————————————优先性级:4-----------------------------------------------------------------------------------------------------------------------------------成员选择 object .*pointer-to -member成员选择 object->*pointer-ro -member—————————————————————————————————————————————————————————优先性级:5-----------------------------------------------------------------------------------------------------------------------------------乘expr * expr除expr / expr取模(余数) expr % expr加(求和)expr + expr减expr - expr—————————————————————————————————————————————————————————优先性级:6-----------------------------------------------------------------------------------------------------------------------------------左移 expr<<expr右移 expr>>expr—————————————————————————————————————————————————————————优先性级:7-----------------------------------------------------------------------------------------------------------------------------------小于 expr<expr小于等于 expr<=expr大于 expr>expr大于等于 expr>=expr—————————————————————————————————————————————————————————优先性级:8-----------------------------------------------------------------------------------------------------------------------------------等于 expr ==expr不等于expr != expr—————————————————————————————————————————————————————————优先性级:9-----------------------------------------------------------------------------------------------------------------------------------按位“异或” expr ^ expr—————————————————————————————————————————————————————————优先性级:10-----------------------------------------------------------------------------------------------------------------------------------按位“与”expr &expr—————————————————————————————————————————————————————————优先性级:11-----------------------------------------------------------------------------------------------------------------------------------按位“或”  expr | expr—————————————————————————————————————————————————————————优先性级:12-----------------------------------------------------------------------------------------------------------------------------------逻辑“与”expr &&expr—————————————————————————————————————————————————————————优先性级:13-----------------------------------------------------------------------------------------------------------------------------------逻辑“或”expr || expr—————————————————————————————————————————————————————————优先性级:14-----------------------------------------------------------------------------------------------------------------------------------条件表达式expr? expr :expr—————————————————————————————————————————————————————————优先性级:15-----------------------------------------------------------------------------------------------------------------------------------简单赋值 lvalue =expr乘并赋值 lvalue *= expr除并赋值 lvalue/= expr取模并赋值lvalue % =expr加并赋值 lvalue += expr减并赋值 lvalue-= expr左移并赋值lvalue<<= expr右移并赋值lvalue >>=expr与并赋值 lvalue &=expr或并赋值 lvalue |=expr异或并赋值lvalue ^=expr—————————————————————————————————————————————————————————优先性级:16-----------------------------------------------------------------------------------------------------------------------------------异常抛出 throw expr—————————————————————————————————————————————————————————优先性级:17-----------------------------------------------------------------------------------------------------------------------------------逗号(序列) expr,expr—————————————————————————————————————————————————————————