C语言一共有34种运算符,如下:

运算符分类:

1.按照功能划分:

(1)算术运算符

  • + 加法运算符
  • - 减法运算符 或者负值运算符
  • * 乘法运算符
  • / 除法运算符
  • % 模运算符,或者取余运算符,要求%两侧均为整形

(2)关系运算符

  • < 小于运算符
  • <= 小于等于运算符
  • > 大于运算符
  • >= 大于等于运算符
  • == 等于运算符
  • != 不等于运算符

(关系运算的结果成立就为“真”==1, 不成立则为“假”==0)

(3)逻辑运算符

  • && 逻辑与运算符
  • ||    逻辑或运算符
  • !  逻辑非运算符

(&按位与 如果两个相应的二进制都为1, 则该位的结果值为1, 否则位0;

| 按位或者两个相应的二进制位 只要有一个为1, 该位的结果值为1;

^ 按位 异或 若参加运算的两个二进制位值相同 则为0, 否则为1;

~ 取反 是一元运算符, 用来对一个二进制数按位取反,即将0变为1,将1 变为 0;

<< 左移用来将一个数的各二进制位全部左移N位,右补0;

>> 右移将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0)

基本运算

(1)运算符根据参与运算的操作数的个数,分为:

  • 单目运算:只有一个操作数, 如:i++;
  • 双目运算:有两个操作数,  如a+b;
  • 三目运算:也成问号表达式, 如 a > b ? 1 : 0;

(2)优先级:oc中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的 结合性所规定的结合方向处理。(注:只需要记住( )优先级最高即可)

(3)c语言中,各种运算符的结合性分为两种,左结合性(自左向右)和右结合性(自右向左)

  • 自左向右,即先左后右:例如表达式:x-y+z, 则y应与“-”号结合,执行x-y 运算,然后再执行+z 运算;
  • 自右向左:最典型的右结合性运算符是负值运算符,例如:x=y=z, 由于“=” 的右结合性,应先执行 y=z 再执行 x= (y=z) 运算。

* 整数除于整数,求出来的结果依然是整数

* 浮点型赋值给整型会损失小数部分

* %两侧必须都为整数

* 利用%求出来的余数是正数还是负数,由%左边的被除数决定,被除数是正数,余数就是正数,反之则反

(4)算术运算的注意点

  • 自动类型转换, 例如:int b = 10.5 + 1.7;
  • 自动将大类型转换为了小类型,会丢失精度 自动类型提升, 例如:int b = 10.5 + 10;
  • 将右边的1提升为了double类型,例如:double b = 1.0 / 2;(解决除法的精度问题);
  • 强制类型转换, 例如:double a = (double)1 / 2;  其中,错误写法:double b = (double)(1 / 2)
  • 求余运算注意事项:参与运算的必须是整数,错误写法:12.3 % 3;m%n 求余,相当于m/n 获取余数;运算结果的正负性取决于第一个运算数,跟后面的运算数无关,例如:10 % -3 = 1

(5)赋值运算符

  • 赋值运算符

    • 简单赋值运算符: =;
    • 复合赋值运算符: +=、-=、*=、/=、%=
      • /= 除后赋值 变量/=表达式 如:a/=3;即a=a/3

        *= 乘后赋值 变量*=表达式 如:a*=3;即a=a*3

        %= 取模后赋值 变量%=表达式 如:a%=3;即a=a%3

        += 加后赋值 变量+=表达式 如:a+=3;即a=a+3

        -= 减后赋值 变量-=表达式 如:a-=3;即a=a-3

  • 赋值表达式
    • 将同类型的数据(如常量、变量、函数等),用运算符号按一定的规则连接起来的、有意义的式子称为表达式。
    • 等号=左边只能是变量,不能是常量,下面的写法是错误的:10 = 10 + 5;

(6)自增运算符

在程序设计中,经常遇到“i=i+1”和“i=i-1”这两种极为常用的操作。C语言为这种操作

oc温习二:基本运算及基本运算符的更多相关文章

  1. PHP语法(二):数据类型、运算符和函数

    相关链接: PHP语法(一):基础和变量 PHP语法(二):数据类型.运算符和函数 PHP语法(三):控制结构(For循环/If/Switch/While) 这次整理了PHP的数据类型.运算符和函数. ...

  2. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

  3. oc随笔二:组合、继承

    在oc中如果没有使用ARC的话,手动管理内存一定要注意处理好“野指针”,通常我们在释放指针的指向的地址时,都要将指针赋值为nil,这样能有效的防止野指针.常用的关键字:retain.assign .s ...

  4. Java基础二(变量、运算符)

    1.变量2.运算符 ###01变量概述 * A: 什么是变量? * a: 变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器,用来装载 ...

  5. Swift5 语言指南(二十八) 高级运算符

    除了Basic Operators中描述的运算符之外,Swift还提供了几个执行更复杂值操作的高级运算符.这些包括C和Objective-C中您熟悉的所有按位和位移运算符. 与C中的算术运算符不同,S ...

  6. Swift5.1 语言指南(二十九)高级运算符

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. C语言杂谈(二)自增运算符++与间接访问运算符*的结合关系和应用模式

    自增运算符++有前缀和后缀两种,在搭配间接访问运算符*时,因为顺序.括号和结合关系的影响,很容易让人产生误解,产生错误的结果,这篇文章来详细分析一下这几种运算符的不同搭配情况. ++.--和*的优先级 ...

  8. iOS开发-OC语言 (二)类的设计

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0. ...

  9. 【Java学习笔记之二十三】instanceof运算符的用法小结

    instanceof运算符用法 运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false 说明: (1)一个类的实例 ...

随机推荐

  1. iOS 随笔小技巧 弱self 打印当前类行数列数,多人开发自动适配pch地址,获取设备uid的信息

    $(SRCROOT)/PrefixHeader.pch自动适配pch地址 __weak __block typeof(self) weakself = self; __weak typeof(self ...

  2. 打开centos直接进入文本模式命令行

    2.打开/etc/inittab 文件 #vim /etc/inittab3.在默认的 run level 设置中,可以看到第一行书写如:id:5:initdefault:(默认的 run level ...

  3. 洛谷 P2515 [HAOI2010]软件安装

    题目描述 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最大). 但是 ...

  4. 如何在Ubuntu里安装Helm

    Helm是什么?在战网上玩过暗黑破坏神2代的程序员们应该还记得,Helm是国度的意思. 而在计算机领域,Helm是什么? Helm是Kubernetes的一个包管理工具,有点像nodejs的npm,U ...

  5. Android(java)学习笔记168:Activity 4 种启动模式

    1. 任务栈(task stack): 任务栈 是用来记录用户操作的行为,维护一个用户体验. 一个应用程序一般都是由多个activity组成的. 任务栈(task stack)记录存放用户开启的act ...

  6. uva1612 Guess

    和cf的打分有点像啊 因为一共只有三道题,所以每个人的得分最多有8种可能性.把这8种可能性都算出来,存在数组里,排好序备用排名就是一个天然的链表,给出了扫描的顺序扫描时,维护两个变量:前一个playe ...

  7. 关于apache access log 统计的那些事儿

    统计APACHE ACCESS.LOG IP访问记录 可以根据自己的需要,统计很多,每个IP访问多少个页面等等! cat access.log-20090904 |awk '{print $3}'|s ...

  8. docker部署xxl-job

    资源 xxl-job:1.9.1 docker:17.05.0-ce maven:3.5.0-jdk-8 tomcat:8.5.23.0 mysql:5.6.40 一.创建数据库 克隆项目到服务器下 ...

  9. get、post、put、delete

    form表单有两种提交方式,get和post,get没有请求体, 但是有查询字符串参数拼接在url后面,post有请求体,表单内容对用户不可见. 1.form表单以get请求提交, 2.from表单以 ...

  10. Luogu P3806 点分治模板1

    题意: 给定一棵有n个点的树询问树上距离为k的点对是否存在. 分析: 这个题的询问和点数都不多(但是显然暴力是不太好过的,即使有人暴力过了) 这题应该怎么用点分治呢.显然,一个模板题,我们直接用套路, ...