1、C语言的操作符有以下几种类型

2、算数操作符

+ - * / %五种

/ 分为:整数除法10/3=0   浮点数除法  10.0/3=3.333333(/两边至少有一个操作数为浮点数)

%取余/取模     10%3==1     左右两边的操作数都要为整型类型

3、移位操作符

位是指二进制位,操作数只能是整数。对整数的二进制位进行移动

对于一个整型,有4个字节32位(二进制位),有原码、反码、补码三种表示形式,内存中存的是补码    所以在参与移位的时候,移动的都是补码    但%d打印出来的都是原码

<<左移操作符

补码整体向左移动,左边的丢掉,右边补0,然后再变回去原码   如:a=-1,a<<1==-20     a=10   a<<1==20,a向左移动一位的结果是20,但a本身大小不变,操作符可理解为运算符,仅表示进行一种运算。  不一定都是严格*2,要按照补码进行运算,但大部分范围内都是*2                                 有符号的int范围是  -2^31----2^31-1  21亿多的一个数

>>右移操作符

1、算术右移(平常见的)  右边丢掉,左边补原来的符号位

2、逻辑右移  右边丢掉,左边直接补0

4、位操作符(包括符号位)

操作数必须是整数,对二进制位进行操作,对内存中二进制位的补码进行操作

&按位与   都是1才是1,有一个是0就是0

|按位或    都是0才是0,有一个是1就是1

^按位异或  相同为0,相异为1

有几个特点    1、a^a=0完全相同没有异   2、a^0=a完全不同还是本身

3、a^a^b=a^b^a=b  异或支持交换律    5^5^3=5^3^5

a^b很重要,^a得到b   ^b得到a。  上图为不创建第三个变量来交换两个变量值的方法,不产生进位,所以没有溢出,从而解决了问题。

5、赋值操作符

a=x=y+1 可以从右向左连续赋值,但不好调试且可读性差,可以拆成x=y+1,a=x

复合赋值符

6、单目操作符

目指的是操作数,单目操作符只有一个操作数

补充:布尔类型(C99标准中引入),用来表示真假的类型  头文件#include<stdbool.h>         _Bool flag=true或false,在判断素数的函数中,也可以使用布尔类型,return true-1/false-0

补充:如果unsigned int a=-10把负十赋给一个无符号整型a,相当于把-10的补码给a,但取出的时候没有符号位,当成有效位,%u(打印无符号数)打印出一个很大的数  42亿多 32位

sizeof运算符,运算这个操作数/类型  占用内存的大小

sizeof内部的表达式不参与实际计算  整型数据放到短整型中会发生截断

~按位取反操作符,符号位也取反。    ~0=-1

位操作符结合~&|^操作符  可以实现对某个数的二进制的某一位进行具体操作

a=10  b=a++  -->a=11,b=10 有a++,a就会改变,  a++-->a=a+1  ==  a+=1

++和--带有副作用,会使自身的值发生改变

强制类型转换

int a=(int)3.14   可能会导致数据丢失,同时例如结构体等类型没法进行强转

6、2sizeof和数组

sizeof(arr)求的是整个数组所占内存的大小

将arr传参传入函数内部时,接收可以用指针和数组两种形式来接收,但实质上还是指针,此时sizeof(arr)求的是这个指针变量的大小

7、关系操作符

比较大小   是否相等  !=       ==

注意:区分=和==一个是赋值,一个是等于,比较容易出错

8、逻辑操作符

逻辑操作符与为操作符&和|不同,前者只关注逻辑上的真与假

逻辑与&&(并且)   两个都是真才为真,有一个假就是假。

逻辑或  | |(或者)   有一个是真就是真,两个都假才是假。

0表示真,非0表示假,逻辑操作符/运算符在  判断时  返回0或非0表示真假,逻辑表达式1为真

被注释的结果是1 2 3 4,没被注释的结果是1 3 3 4

&& 有一个为假,其他全为假,不用看和计算

||有一个为真,结果就为真即1,把1赋给i,不进行后续d++的计算

9、条件操作符(三目操作符)

(exp1?exp2:exp3)(exp为表达式)

exp1为真,exp2作为整个表达式的结果

exp1为假,exp3作为整个表达式的结果

10、逗号表达式

(epx1,exp2,exp3,.....expN)

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

虽然表达式的结果是最后一个表达式的结果,但是前面的步骤可能会影响最后一个表达式的参数,因而影响最终结果,必须从左到右排着计算。

11、下标引用操作符、函数调用、结构成员

arr[4]  操作数为函数名arr和参数4

strlen(“abcdef”) 函数名和参数      至少一个参数(为函数名,有时可以没有参数)

结构成员

C语言中的内置类型有int char  float等

还有自定义(聚合类型)的类型:结构体、枚举、联合体…… 它们产生的原因是生活中有些对象被描述时,不能简单的使用单个的内置类型   如一本书、一个学生   包含多种元素信息 复杂描述

name、author、price都是结构成员,用  .  来访问

.的左边为变量名,右边为成员名

用结构体指针指向成员名,注意结构体要定义在print函数之前,不然找不到结构体

得到结构体变量  用.      得到结构体指针   用->

同时注意传值调用和传址调用

C语言操作符(运算符)详解相关推荐

  1. C语言学习——运算符详解

    C语言学习--运算符详解 一.学习运算符 (1)运算对象的数目 C语言中,运算符的运算对象可以是一个,称单目运算符:运算对象也可以是两个,称双目运算符:运算对象还可以是三个,称三目运算符. (2)运算 ...

  2. C语言——操作符(详解)

    目录 前言 1.操作符的分类 2.算术操作符 2.1.算数操作符的简介 2.2.除法操作符(/)的使用 2.3.取余操作符(%)的使用 3.移位操作符 3.1.什么是移位操作符 3.2.原码.反码和补 ...

  3. C语言关系运算符详解

    在判断条件中,让程序决定下一步的操作,称为关系运算符(Relational Operators). 关系运算符在使用时,它的两边都会有一个表达式,比如变量.数值.加减乘除运算等,关系运算符的作用就是判 ...

  4. C语言 位运算符详解 (使用二进制实例深入学习理解位运算符使用原理)

    C语言中位运算符共有六种 目录 1.&(按位与) 2. |(按位或) 3.^(按位抑或) 4.~(按位取反)

  5. Java千问:Java语言位运算符详解

    很多编程语言都有位运算符,Java语言也不例外.在Java语言中,提供了7种位运算符,分别是按位与(&).按位或(|).按位异或(^).取反(~).左移(<<).带符号右移(> ...

  6. c语言-位运算符-详解

    位运算符是C语言中的一种运算符,用于对整数类型的数据进行位运算操作.C语言中的位运算符包括按位与(&).按位或(|).按位异或(^).按位取反(~).左移(<<)和右移(>& ...

  7. (转)C语言位运算详解

    地址:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html C语言位运算详解 作者:911 说明:本文参考了http://www2.ts ...

  8. c语言练习题及答案)(1),c语言练习题(带详解答案)1.pdf

    c语言练习题(带详解答案)1 (-2) -1: 一单项选择题 /为求商运算符,该运算符能够对整型.字符.浮点等类型的数 据进行运算,5/2 2 1.(A )是构成C语言程序的基本单位. 11.如果 i ...

  9. python语言的格式框架_django框架模板语言使用方法详解

    本文实例讲述了django框架模板语言使用方法.分享给大家供大家参考,具体如下: 模板功能 作用:生成html界面内容,模版致力于界面如何显示,而不是程序逻辑.模板不仅仅是一个html文件,还包括了页 ...

  10. C语言再学习 -- 详解C++/C 面试题 2

    (经典)C语言测试:想成为嵌入式程序员应知道的0x10个基本问题. 参看:嵌入式程序员面试问题集锦 1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define ...

最新文章

  1. sql特殊字符转义,oracle中将字符 ‘ 转义
  2. select 不要 用*
  3. Sublime Text的使用-Mac
  4. Openfiler 排错
  5. Linux Ubuntu如何远程协助Windows
  6. ROS机器人程序设计(原书第2版)3.9.1 使用rqt_rviz在3D世界中实现数据可视化
  7. HTTP协议详细资料
  8. 解决centos KDE命令提示符和文字不紧贴的问题
  9. 图像的灰度级和动态范围(转)
  10. JavaScript提升(Hoisting)---借鉴自W3CSchool
  11. 【每日算法Day 97】经典面试题:求两个数组最小差
  12. 2021-06-27变量的作用域
  13. Duilib中Webbrowser事件完善使其支持判断页面加载完毕
  14. python监控窗口_Windows下python监控脚本
  15. 《图书管理系统》-用例图、活动图与时序图简单绘制-startUML
  16. 阿里巴巴战略发展史(转)
  17. 4 Kubernetes资源-Pod控制器(1)
  18. 等保安全计算环境之Windows(身份鉴别+访问控制)(二级)
  19. C语言:开平方判断素数
  20. 计算机网恢,电脑附身

热门文章

  1. 百度地图瓦片数据爬取--java代码(地图数据篇.2)
  2. 5月14日 python学习总结 视图、触发器、事务、存储过程、函数、流程控制、索引...
  3. 牛顿法及Python实现
  4. 【嵌入式Linux】第二部分 - 开发实践
  5. VUE的项目中怎样修改浏览器窗口的 LOGO
  6. C++标准库笔记:13.5 标准I/O函数
  7. PPT怎样使用艺术字来突出显示标题文本
  8. 色彩构成与搭配内涵教程
  9. 为了给手机省电,,LTE 和NR 都做了些啥?--DRX
  10. 微信登录分享不回调WXEntryActivity