C语言中的符号
运算符的种类C语言的运算符可分为以下几类: 1.算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(–)共七种。 2.关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。 3.逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。 4.位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。 5.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
&=
例如:a&=0x11等价于 a= a&0x11
!=
a!=0x11等价于 a= a!0x11
>>=
例如:a>>=0x11等价于 a= a>>0x11。
<<=
a<<=0x11等价于 a= a<<0x11。
^=
例如:a^=0x11等价于 a= a^0x11。
混合类型位运算规则
6.条件运算符
这是一个三目运算符,用于条件求值(?:)。 7.逗号运算符
用于把若干表达式组合成一个表达式(,)。 8.指针运算符
用于取内容(*)和取地址(&)二种运算。 9.求字节数运算符
用于计算数据类型所占的字节数(sizeof)。 10.特殊运算符
有括号(),下标[],成员(->,.)等几种。 1.C的数据类型
基本类型,构造类型,指针类型,空类型 2.基本类型的分类及特点
类型说明符 字节 数值范围 字符型char 1 C字符集 基本整型int 2 -32768~32767 短整型short int 2 -32768~32767 长整型 long int 4 -214783648~214783647 无符号型 unsigned 2 0~65535
无符号长整型 unsigned long 4 0~4294967295 单精度实型 float 4 3/4E-38~3/4E+38 双精度实型 double 8 1/7E-308~1/7E+308 3.常量后缀 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表示字?quot;A” ,\\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 *p; p为指向整型量的指针变量
int *p[n]; p为指针数组,由n个指向整型量的指针元素组成。 int (*p)[n]; p为指向整型二维数组的指针变量,二维数组的列数为n int *p() p为返回指针值的函数,该指针指向整型量 int (*p)() p为指向函数的指针,该函数返回整型量
int **p p为一个指向另一指针的指针变量,该指针指向一个整型量。
指针变量的赋值 p可以有以下两种方式: (1)指针变量初始化的方法 int a;
int *p=&a;
(2)赋值语句的方法 int a; int *p; p=&a;
(1)取地址运算符& (2)取内容运算符*
按位与运算符(&)
参加运算的两个数据,按二进制位进行“与”运算。 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0
例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。
另,负数按补码形式参加按位与运算。 “与运算”的特殊用途:
(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
(2)取一个数中指定位
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。 例:设X=10101110,
取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到; 还可用来取X的2、4、6位。