算术操作符

基本算术操作符:

+ :正号操作符(一元操作符)

-  :负号操作符(一元操作符)

* :乘法操作符

/  :除法操作符

%:求余操作符

+ :加法操作符(二元操作符)

-:减法操作符(二元操作符)

tips 1 两个整数相除的结果为整数,舍去小数部分,例如,5/3结果为1。

2 如果除数或被除数中有一个为负值,舍入方向不固定

3 % 操作符要求参加运算的操作数为整数,结果也是整数

*同一个字母的小写字符的ASCII代码比大写字符的ASCII代码大32

*#include <math.h>

area = sqrt(s * (s - a) * (s - b) * (s - c))

*float:输入输出都用%f

double输入输出都用%lf

自增和自减操作符

int main()
{
	int a=7;
	printf("%d %d",a++,a);//8 8
	printf("%d %d",++a,a);//7 8
	
	return 0; 
}

++i,--i:先使i的值加(减)1,然后使用i的值。相当于计算i=i+1,并且整个赋值表达式的返回值为i+1

i++,i--:先使用i的值,然后使i的值加(减)1。相当于计算i=i+1,并且整个赋值表达式的返回值为i

指针加法和减法

指针类型的值加上一个整数n,是加上n个指向对象所占的字节数

对于int *p,如果p的值为2000,那么p+3的值是2000+3*sizeof(int)=2012,而不是2003。

位操作符

位运算是指按二进制位进行的运算。

位运算可以将多个标志状态组合在一起,也可以将标志状态从字节中分离出来

按位与& :对应位均为1时结果位为1,否则为0。

按位或|:对应位均为0时结果位为0,否则为1.

按位异或^:对应位不相同时结果位为1,否则为0

按位取反~:各位翻转

按位左移<< 使左操作数的各位左移,高位溢出,低位补0。

按位右移>> 使左操作数的各位右移,低位溢出,高位对无符号数和有符号中的正数,补0;对有符号数中的负数...

复合赋值操作符

复合赋值操作符包括:+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=

例如:a+=3  等价于  a=a+3

          a&=3 等价于  a=a&3

关系操作符

<    (小于)  

<=  (小于或等于)    

>    (大于)    

=  (大于或等于)

————————————优先级高低

==  (等于)    

!=   (不等于)  

关系表达式的操作数是数值;关系表达式的值是一个逻辑值,即“真”或“假”

将逻辑值转换为数值:“真”转换为数值1,“假”转换为数值0。

将数值转换为逻辑值: 非0数值转换为“真”,数值0转换为“假”。

逻辑操作符(优先级递减)

操作数都是逻辑值

逻辑非  !   (一元操作符)

逻辑与&&(二元操作符):只有当二者都真时,表达式才是真

逻辑或 || (二元操作符):只有当二者都假时,表达式才是假

短路特性:逻辑表达式求解时,并非所有的逻辑操作符都被执行,只是在必须执行下一个逻辑操作符才能求出表达式的解时,才执行该操作符。

例:a && b && c //只在a为真时,才判断b的值

                    //只在a、b都为真时,才判断c的值

例:a || b || c     //只在a为假时,才判断b的值

                    //只在a、b都为假时,才判断c的值

条件操作符

Expr1 ? Expr2 : Expr3

int main()
{
	char c;
	c=getchar();
	c=(c>'A'&&c<'Z')?(c+32):c;
	putchar(c);
	return 0; 
}

隐式类型转换和强制类型转换

隐式类型转换

强制类型转换

(Type) Expr

例如:(double)a (将a转换成double类型)

              (int)(x/y)      (将x/y的值转换成int型)  

              (float)(5%3)(将5%3的值转换成float型)

表达式和语句

表达式的末尾没有分号,而语句有分号。

在表达式的末尾加上一个分号就成为了一个语句。