分类:

  • 算术操作符
  • 移位操作符
  • 位操作符
  • 赋值操作符
  • 单目操作符
  • 关系操作符
  • 逻辑操作符
  • 条件操作符
  • 逗号表达式
  • 其他操作符(下标引用、函数调用和结构成员)

一、算数操作符

1、算术操作符包括:+  、— 、 *  、/ 、%

2、加、减、乘操作符和平常数学中的运算法则相同。

3、除法操作符左右两边操作数为整型,则执行整数除法,只要有一个操作数为浮点型,则执行浮点型除法。

4、取余操作符左右两边操作数必须为整数。

二、移位操作符

1、移位操作符包括:<<  左移操作符,>> 右移操作符

2、左移操作符移位规则:左边抛弃,右边补0

  1. //正数:原码=反码=补码
  2. //负数:反码=原码除符号位取反 补码:反码+1
  3. int num = ; //00000000 00000000 00000000 00001010
  4. num << ; //00000000 00000000 00000000 00101000
  5. int num = -; //11111111 11111111 11111111 11110110
  6. num << ; //11111111 11111111 11111111 11011000//正数:原码=反码=补码
  7. //负数:反码=原码除符号位取反 补码:反码+1
  8. int num = ; //00000000 00000000 00000000 00001010
  9. num << ; //00000000 00000000 00000000 00101000
  10. int num = -; //11111111 11111111 11111111 11110110
  11. num << ; //11111111 11111111 11111111 11011000

3、右移操作符移位规则:

逻辑移位:右边抛弃,左边用0填充

算数移位:右边抛弃,左边用原数字的符号位填充

  1. int num = -; //11111111 11111111 11111111 11111111
  2. num >> ;
  3. //算数移位: //11111111 11111111 11111111 11111111
  4. //逻辑移位: //01111111 11111111 11111111 11111111
  5. int num = ; //00000000 00000000 00000000 00000010
  6. num >> ;
  7. //算数移位: //00000000 00000000 00000000 00000001
  8. //逻辑移位: //00000000 00000000 00000000 00000001

注意:移位操作符移动的是二进制位,不能移动负数位。

三、位操作符

1、位操作符包括:&按位与  、|按位或  、^按位异或

2、两个数字相同异或等于0,0和任何数字异或得该数字

3、给定一组数字,除一特殊数字外,其他都成对出现,找出该数字:异或所有数字

  1. //不创建临时变量,实现两数字交换
  2. int a = ;
  3. int b = ;
  4. a = a^b;
  5. b = a^b;
  6. a = a^b;
  7. printf("a = %d\tb = %d\n",a,b);
  8. //求一整数在内存中的二进制中1的个数
  9. int num = -;
  10. int i = ;
  11. int count = ;
  12. while(num))
  13. {
  14. count++;
  15. num=num&(num-)
  16. }
  17. printf("二进制中1的个数:%d",count);

四、赋值操作符

1、普通赋值操作符:=

2、复合赋值符:+= 、-= 、*= 、/= 、%= 、>>=  、<<= 、&=  、|= 、^=

  1. int a = ;
  2. int x = ;
  3. int b = a+x;
  4. x += ;
  5. a *=;

五、单目操作符

1、单目操作符包括:

!逻辑反   //一般用于表示真假

- 负值

+ 正值

& 取地址

sizeof 操作数的类型长度(以字节为单位)

~ 对一个数的二进制按位取反

-- 前置、后置--

++ 前置、后置++

* 间接访问操作符

(类型) 强制类型转换

2、sizeof()为操作符,不为sizeof()函数,()中可以为类型,也可为变量,为变量时()可以去掉,()中为数组名计算的是数组字节数

3、数组名arr取的是数组首元素的地址,&arr取的是整个数组的地址  //int (*p3)[10]=&arr;  p3是一个数组指针

4、关于数组名的扩充:

  • 数组名可以表示整个数组  : (1)、sizeof(数组名)(2)、&数组名
  • 数组名可以表示首元素地址  : 除以上两种情况外,数组名都表示首元素地址
  1. void test1(int arr[])
  2. {
  3. //计算传来首元素指针大小
  4. printf("%d\n",sizeof(arr));//
  5. }
  6. void test2(char ch[])
  7. {
  8. //计算传来首元素指针大小
  9. printf("%d\n",sizeof(ch));//
  10. }
  11. int main()
  12. {
  13. int arr[] = {};
  14. char ch[] = {};
  15. //计算数组的字节大小
  16. printf("%d\n",sizeof(arr));//
  17. printf("%d\n",sizeof(ch));//
  18. test1();
  19. test2();
  20. }

六、关系操作符

1、关系操作符包括:> 、>= 、< 、<= 、!= 、==

2、注意等于时用==,=为赋值操作符

七、逻辑操作符

1、逻辑操作符包括:&&逻辑与 、||逻辑或

2、对于逻辑与,左边为假,后边都不运算

3、对于逻辑或,左边为真,后边都不运算

  1. int i = ,a = ,b = ,c = ,d = ;
  2. i = a++ && ++b && d++;
  3. printf("%d %b %b %b",a,b,c,d);//1 2 3 4
  4. i = a++ || ++b || d++;
  5. printf("%d %b %b %b",a,b,c,d);//2 2 3 4

八、条件操作符

exp1 ? exp2  :exp3

九、逗号表达式

exp1 ,exp2  , exp3,……expN

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

十、其他表达式(下标引用、函数调用和结构成员)

1、[ ]下标引用操作符

操作数:一个数组名+一个索引值

2、()函数调用操作符

接受一个至多个操作数,第一个为函数名,其他给函数传递实参

3、访问一个结构成员

  • 结构体.成员名

->结构体指针->成员名

c语言操作符总结的更多相关文章

  1. C语言操作符优先级

    C语言操作符优先级 优先级 运算符 含    义 要求运算 对象的个数 结合方向 1 () [] -> . 圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符 自左至右 2 ! 逻辑非运 ...

  2. C语言操作符

    C语言操作符的分类: 算术操作符 逻辑运算符 位操作符     赋值操作符 单目操作符 关系操作符 条件操作符 逗号表达式 数组下标引用 函数调用 结构体成员使用 大体上,C语言的操作符具体就这么些, ...

  3. C语言操作符学习总结

    c语言中关于操作符部分的学习,可以主要分为两个部分:操作符和表达式. 这里首先是列举各种操作符,在C语言中,一般主要的操作符有这么几种:算数操作符,移位操作符,位操作符,赋值操作符,单目运算符,关系操 ...

  4. C语言-操作符与表达式

    C语言入门之操作符与表达式 前言 本篇文章主要包括各种操作符的介绍与表达式求值,欢迎各位小伙伴与我一起学习. 一.操作符 分类 算术操作符 移位操作符 位操作符 赋值操作符 单目运算符 关系操作符 逻 ...

  5. C语言操作符/表达式及其作用总结

    一.算术操作符:+ - * / % 1. 除了 %操作符之外,其他的 几个操作符可以作 用于整数和浮点数. 2. 对于"/"操作符如果两个操作数都为整数,执行整数除法.而只要有浮点 ...

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

    今天有一个枚举的题目的代码是这样的: 重点在于maxXor这个函数的实现,枚举两个数字,其中maxr保存了最大值的 i 异或 j , 可是这个程序执行结果大大出乎意外-_-. 然后就把 i 异或 j ...

  7. C++ 语言操作符的优先级

    cppreference.com -> C++ 操作符优先级 C++ 操作符优先级        优先级     操作符 1 () [] -> .   ::         ! ~ ++ ...

  8. c语言操作符 “++”另类行为

    正常情况下,我们使用++ int a = 1; a++; printf(“%d”,a); // 2; 很简单没什么好说的. #include <stdio.h>   int main() ...

  9. 浅析C语言指针问题

    首先明白c语言操作符的优先级及结合性就很容易理解了. 链接 1.关于char *s 及 char s[] char *s指向的是一个字符串对象的指针,可以理解为间接引用,比如 char *s = “1 ...

随机推荐

  1. vue2上传图片到OSS

    第一步:安装阿里云OSS <!-- 引入在线资源 --> <script src="http://gosspublic.alicdn.com/aliyun-oss-sdk- ...

  2. BOM模型中常用对象 定义计数器 网页跳转 网页前进后退

    今天上午学了的BOM模型中常用对象,了解了一部分的属性 For循环的规律 外层循环控制行 内层循环控制列 <!doctype html> <html> <head> ...

  3. XSS学习(二)

    尝试操作Cookie 创建一个cookie,需要提供cookie的名字,值,过期时间和相关路径等 <?php setcookie('user_id',123); ?> 它的作用是创建一个c ...

  4. SQLServer 账户当前被锁定

    嗯,被攻击了一波,烦躁很 ‘帐户当前被锁定,所以用户 ‘sa’ 登录失败.系统管理员无法将该帐户解锁’解决方法 如果短时间内不停连接,就会被SQL SERVER误认为是这是攻击,会将此账号锁定. 要用 ...

  5. asp.net core webapi处理Post请求中的request payload

    request payload的Content-Type实际上是text/plain的,如果请求的 Content-Type 为 application/json,这将导致415 Unsupporte ...

  6. Django学习笔记之视图高级-错误处理

    错误处理 在一些网站开发中.经常会需要捕获一些错误,然后将这些错误返回比较优美的界面,或者是将这个错误的请求做一些日志保存.那么我们本节就来讲讲如何实现. 常见的错误码 404:服务器没有指定的url ...

  7. HTTP 客户端接收数据超时

    本文使用两种方式测试HTTP 客户端读数据超时的情况,一种是直接使用golang自带的http库,另一种是使用martini web框架. 1. 测试1--直接使用http库 1.1.启动server ...

  8. 精读《C++ primer》学习笔记(第一至三章)

    第一章: 重要知识点: 类型:一种类型不仅定义了数据元素的内容,还定义了这类数据上可以进行的运算:所以说类定义,实际上就是定义了一种数据类型: >>和<<运算符返回其左侧的运算 ...

  9. php7 pdo抽象类操作数据库

    查询 <?php try { $dbconnect = new PDO('mysql:host=localhost;dbname=pdodatabase','root','753951'); } ...

  10. bat文件与Vbs文件常用操作(获取用户输入,执行VBS文件)

    bat文件: set /P StrInput="输入数字:" echo 输入的数字为%StrInput% set /P Flg="是否执行(y/n):" IF ...