C语言操作符自我总结

1.算数操作符:
+? ? -? ?*? ? /? ? ?%

注意点:

  1. %号 只能用于整数
    2.除数不能为0
  2. /号,如果两数都是整数,结果为整数;如果有一个数为小数,结果为小数。

整型提升:凡是针对char,short型的数学运算,此时都会隐式转换为?int?型
(因为CPU运算一般以整型为基本单位)
算数转换:

long double
double 8个
float 4个
unsigned long int
long int 4个
long long 8个
unsigned int
int 4个
short 2个字节

如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另外一个操作数的类型后执行运算。
警告: 但是算术转换要合理,要不然会有一些潜在的问题。

2.移位操作符
? ? ? ?<< 左移操作符? ? ? ? 左移相当于乘以2

? ? ? ?>> 右移操作符? ? ? ? 右移相当于除以2

左移操作符:左边抛弃,右边补0

右移操作符:1. 逻辑移位 :左边用0填充,右边丢弃? ? ? ?

  1. 算术移位 :左边用原该值的符号位填充,右边丢弃。

符号位就是最高位,代表这个十进制数的正负:

? ? ?最高位如果是0,就是正数,

? ? ?最高位如果是1,就是负数,

注意:如果右移一个负数(算术移位),左边补1,没多大意义

3.位操作符(都是二进制位来说,双目操作符)
& 按位与? ? ? ? ?两个操作数都为1,结果才是1

|? 按位或? ? ? ? ?两个操作数都为0,结果才是0

^ 按位异或? ? ? 两个操作数相同,结果是0,两个操作数不相同,结果是1

~ 按位取反? ? ? 按位取相反数? 0变成1,1变成0

4.赋值操作符(双目操作符)
复制操作符最常见的就是“=”,赋值操作符可以连续使用,连续赋值
复合赋值操作符:

+=? ? ? ? *=? ? ?? ? /=? ? ? %=? ? ? >>=? ? ?<<=? ? ? ?&=? ? ? ? |=? ? ? ?^=

5.单目操作符
! ?????逻辑反操作

  • ?????负值
  • ?????正值
    & ?????取地址
    sizeof ???操作数的类型长度(以字节为单位)
    (如果要计算数组的长度,则数组在哪里定义,在哪里计算)
    ~ ?????对一个数的二进制按位取反
    -- ?????前置、后置--
    ++ ?????前置、后置++
  • ?????间接访问操作符(解引用操作符)
    (类型) ???强制类型转换
    注意:*? 间接访问操作,这个会在指针里面广泛用到。

++i,--i 先运算,再使用

i++,i-- 先使用,再运算

6.关系操作符

=
<
<=
!= ?用于测试“不相等”
== ???用于测试“相等”

7.逻辑操作符
&& ??逻辑与? ? ? ?两个条件同时满足
|| ?????逻辑或? ? ? ?两个条件至少满足一个

特别:
短路性:&&左侧表达式为假时,右侧表达式不会进行求值

? ? ? ? ? ? ? ? ? ? ?||左侧表达式为真时,?右侧表达式不会进行求值

8.条件操作符(C语言中唯一 一个三目运算符)
exp1 ? exp2 : exp3? ?

exp1 为真 结果为exp2 为假 结果为exp2

9.逗号表达式
exp1, exp2, exp3, …expN

逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

原文地址:https://blog.51cto.com/14232658/2382926

时间: 2024-10-07 16:59:16

C语言操作符自我总结的相关文章

c语言操作符优先级

运算符 结合性 () [] -> . 自左至右 ! ~ ++ -- - (type) * & sizeof 自右至左 * / % 自左至右 + - 自左至右 << >> 自左至右 < <= > >= 自左至右 == != 自左至右 & 自左至右 ^ 自左至右 | 自左至右 && 自左至右 ||  自左至右 ?: 自右至左 = 自右至左 , 自左至右 1.优先级最高的并不是真正意义上的运算符,包括数组下标,函数调用操作符和

被C语言操作符优先级坑了

今天有一个枚举的题目的代码是这样的: 重点在于maxXor这个函数的实现,枚举两个数字,其中maxr保存了最大值的 i 异或 j , 可是这个程序执行结果大大出乎意外-_-. 然后就把 i 异或 j 的结果临时保存在int,进行比较,程序正确的执行了.原来是被操作符优先级坑到了.位操作的优先级比比较操作符的优先级更低. #include <map> #include <set> #include <list> #include <cmath> #includ

c语言操作符总结

C语言操作符总结:分类:算术操作符,移位操作符,位操作符,赋值操作符,复合操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用.函数调用和结构成员.一.算术操作符--"+,-,*,/,%"*注:(1)%(求余)操作符的两个操作数必须为整数,返回的是整除之后的余数.而其他操作符可以用于整数和浮点数.(2)/(除法)操作符的两个操作数若都为整数,执行整数除法.而只要有浮点数就执行浮点数除法.二.移位操作符--"右移>> , 左移<<

关于C语言操作符的总结

整理了一些C语言中的操作符,简单介绍了一下部分重要操作符,也算学习操作符的一些收获吧. 一.C语言操作符分类算数操作符.移位操作符.位操作符.赋值操作符.单目操作符.关系操作符.逻辑操作符.条件操作符二.操作符介绍1.算数操作符:+ - / %a.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数b.对于/操作符,如果两个数都为整数,执行整数除法.而只要有浮点数执行的就是浮点数除法c.%操作符的两个操作数必须为整数,返回的是整除之的余数2.移位操作符 <<左移 >>右移a.左

C语言操作符

   在这里,为初学C语言的小伙伴们介绍几种基本的操作符.希望对大家的学习有所帮助!   1.算数操作符      "+(加)","-(减)","*(乘)","/(除)","%(取余)",在此着重介绍"%"取余操作,简单举 个实例,12%5=2,但是,要注意符号的两侧必须为整形数据. 2.移位操作符 "<<(左移)"">>(右移)&q

C语言操作符学习总结

c语言中关于操作符部分的学习,可以主要分为两个部分:操作符和表达式. 这里首先是列举各种操作符,在C语言中,一般主要的操作符有这么几种:算数操作符,移位操作符,位操作符,赋值操作符,单目运算符,关系操作符,逻辑操作符,条件操作符,逗号表达式以及比较特殊的几个操作符. 算数操作符 算数操作符,主要是:+ , -,  *,  /, % 这些都是比较常见的,不光是在C语言中学习到,事实上从小我们学习数学都常用到他们,所以这里没什么多说的,就是有几点注意事项: 除了取模运算,也就是取余数的%操作符,其他

c语言做自我介绍

萌妹子都是这样子做自我介绍的 啦啦啦 CodeSnippet:#include<stdio.h> #include<conio.h> #include<windows.h> void DrawPic(); void printSpace(); int main() { int i; int j=3; printf(" *** ***\n"); printf(" ****** ******\n"); printf(" **

C语言中自我递归的几个例子

递归 递归就是一个函数在它的函数体内调用它自身.执行递归函数将反复调用其自身,每调用一次就进入新的一层. 递归函数必须有结束条件. 递归分为回推和递推两个阶段,当一直回推,直到遇到墙后返回,这个墙就是结束条件. 所以递归要有两个要素,回推墙与递推关系 例题 计算n的阶乘 #include <stdio.h> int factorial(int n) { int result; if (n<0)                                          //判断例外

摘:C语言操作符优先级

操作符 描        述 用    法    示    例 结果类型 结合性 是否控制求值顺序 () 聚组 (表达式) 与表达式同 N/A 否 () 函数调用 rexp(rexp, ..., rexp) rexp L-R 否 [] 下标引用 rexp[rexp] lexp L-R 否 . 访问结构成员 lexp.member_name lexp L-R 否 -> 访问结构指针成员 rexp->member_name lexp L-R 否 ++ 后缀自增 lexp++ rexp L-R 否