[C]操作符总结

C语言中的操作符较多,且灵活,若能熟练使用,必成大器!

如下开始简介

1.算术操作符 **

算术操作符有+、-、*、/、%(整数求余)

 

(1)它们的结合性都是从左向右的。

(2)+、-、*、/的操作数可以是int型、float型、double型,%的操作数只能是整型。

(3)/:如果操作数都是整型,结果为整型。整数的得到并不是四舍五入,而是取整数部                  分,舍去小数。如果操作数有一个是浮点型,则结果为浮点型。a/b为a除以b的值

(4)%:模数,求余符号。a%b得到的是a除以b的余数。

2.移位操作符 ***

左移操作符:<<     

移位规则:左边抛弃,右边补0    

运算规律为:给一个数左移n位,相当于乘以2的n次方。

右移操作符:>>    

移位规则:  逻辑移位和算术移位(取决于编译器)。

(a)逻辑移位:左边用0填充,右边丢弃。

(b)算术移位(常用):左边用原该数的符号位填充,右边丢弃。

两者对数的运算都是先将数化为二进制数,再进行左右移操作,从而改变原数的值

2.位操作符 ****

                    &

规则:先化为二进制数,一位一位&,同为1才为1。

       |

规则:先化为二进制数,一位一位|,同为0才为0。

      ^

规则:先化为二进制数,一位一位^,相同为假,相异为真。

按位异或实用示例:

int num1 = 10;
int num2 = 20;
//交换num1和num2且不实用第三变量的方法
num1 = num1^num2;
num2 = num1^num2;
num1 = num1^num2;
//num1的二进制为00000000000000000000000000001010,
//num2的二进制为00000000000000000000000000010100,
//异或后num1=    00000000000000000000000000011110,
//异或后num2=    00000000000000000000000000001010,即变为num1.
//异或后num1=    00000000000000000000000000010100,即变为num2.

4.赋值操作符

赋值类型

   

普通赋值

             =

赋值操作符的左侧必须为一个变量。可以用在给变量定义并初始化时,也可以用在定义后给变量赋值。

复合赋值

+=、-=、*=、/=、%=、>>=、<<=、&=、|=、^=

这些赋值符都是自右向左结合。

5.单目运算符

(1)!   逻辑反操作
用法:int a=10;printf("%d",!a);  结果 :0       
(2)-    负值    R-L    (表示从右向左结合)    
(3)+   正值    R-L            
(4)sizeof操作数的类型长度(单位:字节)字符串计算时系统自动给字符串的末尾加上‘\0'.
(5)~  对一个数的二进制按位取反。

//例
int a=5;  
int b=~a; 
printf("%d",b);
//5的二进制为00000000000000000000000000000101
//按位取反为  11111111111111111111111111111010
//最高位是1,说明是负数。负数以原码的补码存储在二进制中。
//原码转换补码的方法是:符号位不变,其它位按位取反,再给末位加1.反过来求:
//先减1,按位取反,符号位不变。所以b的原码是10000000000000000000000000000110,化为十进制为-6.

符号

作用

使用方法

--

自减

--i  :在使用i之前给i减1.        

i---:  在使用i之后给i减1.

++

自增

++i:在使用i之前加1     

i++:在使用i之后加1.

&

取地址

int i;   int* p;    p=&i;       那么p存放的是i的地址。

*

间接访问

对指针变量前加*可以间接访问指针变量所指向的变量

()

强制类型转换

int  a=1;   double b=(double)(a);   这就实现了把a的值先转换为浮点型后再赋给b

6.关系操作符

有>、<、>=、<=、!=(测试“不相等“)、==(测试相等),多用于判断或循环结构。

较为简单不做解释,仅 强调 当判断相等时必须用 == 切记与 单个 = 的区别

8.条件操作符

(表达式1)?(表达式2):(表达式3)     判断表达式1,如果为真,则执行表达式2,否则执行表达式3.

:c=a>b?a:b;   表示把a和b中的较大值赋给c。

 

 

猜你喜欢

转载自blog.csdn.net/quchen528/article/details/83099261
今日推荐