C语言运算符及其优先级汇总表口诀

C语言运算符及其优先级汇总表口诀
    圆下箭头一顿号
    非凡增减富强针地长
    三乘除,四加减,五移位
    千万别把鱼忘记,它在盛饭的厨子里
    小灯大灯灯灯不等
    爸喂鱼,舅疑惑,裸鸡也疑惑
    十三姨,十四父,十五逗,兜到低
    “圆下箭头一顿号”指的是第15级的运算符。其中圆指的是运算符(),下指的是下标运算符[],箭头指的是指向结构体成员运算符->,顿号指的是结构体成员运算符、
    “非凡增减富强针地长”指的是第14级的运算符。其中非指的是逻辑运算符!,凡指的是按位取反运算符~,增减指的是自增和自减运算符++和--,富指的是负号运算符-,强指的是类型转换运算符(类型),针指的是指针运算符*,地指的是地址运算符&,长指的是长度运算符Sizeof
    “三乘除,四加减,五移位” 指的是第13级到第11级的运算符。其中三四五并无实际意义,只是起区分级别而已。也可以想象三指的是第13级运算符。乘除指的是乘法运算符*和除法运算符/,加减指的是加法运算符+和减法运算符-,移位指的是左移运算符<<和右移运算符>>
    “千万别把鱼忘记,它在盛饭的厨子里”指的是求余运算符%,它位于盛饭的厨子里,即指和乘法运算符、除法运算符在一起。
    “小灯大灯灯灯不等” 指的是第10级到第9级的运算符。其中小灯大灯指的是关系运算符<、<=、>和>=,灯灯指的是等于运算符==,不等指的是不等于运算符!=
    “爸喂鱼,舅疑惑,裸鸡也疑惑”指的是第8级到第4级的运算符。其中,爸喂鱼之指的是第8级的按位与运算符&,舅疑惑指的是第7级的按位异或运算符^和第6级的按位或运算符||,裸鸡也疑惑指的是第5级、第4级的逻辑与运算符&&和逻辑或运算符||
    “十三姨,十四父,十五逗,兜到低”指的是第3级到第1级的运算符。其中,十三姨指的是条件运算符?: (三有双重含义,即指?:的优先级别是三,它的运算符类型也是三目,?难道不是姨即疑惑吗?),十四父的十四没有实际意义,父指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,十五逗指的是第1级的运算符,兜到低指的是15级运算符以,结束。
    附录:C语言运算符及优先级
优先级        运算符        含义                  运算符类型       结合方向
    15        ()        圆括号                            单目           自左向右
        []        下标运算符
        —>        指向结构体成员运算符
        、        结构体成员运算符
    14        !        逻辑非运算符                                        自右向左
        ~        按位取反运算符
        ++        自增运算符
        --        自减运算符
        -        负号运算符
        (类型)        类型转换运算符
        *        指针运算符
        &        地址运算符
        Sizeof        长度运算符
    13        *        乘法运算符                            双目          自左向右
        /        除法运算符
        %        求余运算符
    12        +        加法运算符
        -        减法运算符
    11        <<        左移运算符
        >>        右移运算符
    10        <、<=、>、>=        关系运算符
    9        ==        等于运算符
        !=        不等于运算符
    8        &        按位与运算符
    7        ^        按位异或运算符
    6        |        按位或运算符
    5        &&        逻辑与运算符
    4        ||        逻辑或运算符
    3        ?:        条件运算符                          三目          自右向左
    2        =、+=、-=、*=、
           /=、%=、>>=、
           <<=、&=、^=、|=   赋值运算符         双目
    1        ,        逗号运算符                              双目         自左向右
    ②括号成员第一;        //括号运算符[]() 成员运算符.  ->    全体单目第二;        //所有的单目运算符比如++ -- +(正) -(负) 指针运算*&
    乘除余三,加减四;   //这个"余"是指取余运算即%
    移位五,关系六;    //移位运算符:<< >> ,关系:> < >= <= 等
    等于(与)不等排第七;    //即== !=
    位与异或和位或;    //这几个都是位运算: 位与(&)异或(^)位或(|)
    "三分天下"八九十;
    逻辑或跟与           //逻辑运算符:|| 和 &&
    十二和十一;            //注意顺序:优先级(||)  底于 优先级(&&)
    条件高于赋值,       //三目运算符优先级排到 13 位只比赋值运算符和","高//需要注意的是赋值运算符很多!
    逗号运算级最低!   //逗号运算符优先级最低
    由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!

    ((*strDest++=*strSrc++)!='\0');  :
    重点:++后增运算符优先级高于*
    1.*strDest++相当于 *(strDest++)
    2.由于是后自增,故执行顺序为:
               *strDest=*strSrc
               strDest++ strsrc++  //该级顺序不明
              将*strDest与'\0'比较 //即,整个表达式的值为*strDest与'\0'的比较结果
    值得注意的是,对于赋值表达式,表达式本身的值等于左边子表达式的值。
    通过以上深入的分析,我们知道这个表达式完成了以下多个功能:
      1.对于指针strDest, strSrc,将strSrc所指的内存空间的值赋给由strDest所指的内存空间。
      2.判断赋值后的strDest所指的内存空间的指是否等于0。
      3.对于指针strDest,strSrc,他们的值分别加1,即指向下一个元素。
    即:该表达式实现了以下三个功能:
      1.对于指针strDest, strSrc,将strSrc所指的内存空间的值赋给由strDest所指的内存空间。
      2.判断赋值后的strDest所指的内存空间的值是否等于0。
      3.对于指针strDest,strSrc,他们的值分别加1,即指向下一个元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

laraval如何使用tdd

1.首先新建一个laravel birdboard项目 composer create-project --prefer-dist birdboard 2.新建单元测试 php artisan make:test ProjectTest 3.书写单元测试 对于初学着来说&#xff0c;最好先预测tdd即将要出现的错误&#xff0c;然后进行测试&#xff0c;判断是否和自…

让你页面速度飞起来 Web前端性能优化

百度网盘下载 第1章 课程简介对课程做简单的介绍。第2章 资源合并与压缩通过本章&#xff0c;我们学习和理解了web前端的概念&#xff0c;以及性能优化的意义所在&#xff0c;并且通过实战中的压缩与合并&#xff0c;深入理解了减少http请求数和减少http请求资源大小两个优化要…

spring-data-JPA使用JpaRepository注解自定义SQL查询数据库多表查询

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一. 首先在Entity注解的类里面要写好外键关系. 这个 ManyToOne 注解可以建立外键关系, 不要在自己傻傻的写一个 private int grades_id…

工厂示例

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; using System.Reflection;namespace Common.DALFactory {/// <summary>/// 数据层对象实例创建/// </summary>public partial class DbFacto…

手把手教你如何优化C语言程序

程序进行优化&#xff0c;通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一&#xff0c;一般是优化了代码的尺寸&#xff0c;就会带来执行时间的增加&#xff0c;如果优化了程序的执行速度&#xff0c;通常会带来代码增加的副作用&#xff0c;很…

posman使用教程

1.新建文件夹 2.新建请求&#xff0c;右击文件夹&#xff0c; 3.点开测试文件&#xff0c;有get,put,post方法&#xff0c;我经常使用的是put方法&#xff0c;区别我就不讲了 4.我基本上填在body里面 5.这是基本的使用&#xff0c;我来更高级一点添加环境变量&#xff0c;一共有…

Linux实战教学笔记42:squid代理与缓存实践(一)

第1章 Squid介绍 1.1 缓存服务器介绍 缓存服务器&#xff08;英文意思cache server&#xff09;,即用来存储&#xff08;介质为内存及硬盘&#xff09;用户访问的网页&#xff0c;图片&#xff0c;文件等等信息的专用服务器。这种服务器不仅可以使用户可以最快的得到他们想要的…

Mysql中DATE_SUB 使用方法结合查询一天内,一周内,一月内的信息实例讲解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在对数据查询或菜单时经常要对指定的时间或时间段进行查询,例如要查询一天内的信息,要查询一周内的信息,要查询一个月内的,南昌网站建设公…

mac电脑php中安装swoole扩展件

1.首先更新php版本&#xff0c;如果已经是最新的请忽略&#xff0c; &#xff08;1&#xff09;查看是否安装php brew search php &#xff08;2&#xff09;安装最新版本php brew install php 2.查看是否安装openssl&#xff0c;安装了请忽略 &#xff08;1&#xff09;查看…

再谈C语言指针—指向另一指针的指针

一、回顾指针概念 早在本书第贰篇中我就对指针的实质进行了阐述。今天我们又要学习一个叫做“指向另一指针地址”的指针。让我们先回顾一下指针的概念吧&#xff01;当我们程序如下声明变量&#xff1a;short int i;char a;short int * pi;程序会在内存某地址空间上为各变量开辟…

Java练习 SDUT-1586_计算组合数

计算组合数 Time Limit: 1000 ms Memory Limit: 32768 KiB Problem Description 计算组合数。C(n,m),表示从n个数中选择m个的组合数。 计算公式如下&#xff1a; 若&#xff1a;m0&#xff0c;C(n,m)1 否则&#xff0c; 若 n1&#xff0c;C(n,m)1 否则&#xff0c;若mn&#xf…

mysql日期时间操作函数详解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 win7可以设定每周从哪一天开始&#xff0c;win2003等不能方便的修改。有的是周日开始&#xff0c;有的是周一开始。而工作中有的时候每周…

对C语言进行调试的最好方法是什么?

要了解调试程序的最好方法&#xff0c;首先要分析一下调试过程的三个要素&#xff1a;应该用什么工具调试一个程序?用什么办法才能找出程序中的错误?怎样才能从一开始就避免错误?应该用什么工具调试一个程序?有经验的程序员会使用许多工具来帮助调试程序&#xff0c;包括一…

如何赋值hook定义的变量

1、定义变量 const { tableProps, mutate} useRequest(async (params {}) > {const { success, data, total } await Api.getUserAccountApi({page: params.current || 1,...searchValue,});return {list: success ? data : [],total: success ? total : 0,};},{pagin…

java中的sleep()和wait()的区别

对于sleep()方法&#xff0c;我们首先要知道该方法是属于Thread类中的。而wait()方法&#xff0c;则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间&#xff0c;让出cpu该其他线程&#xff0c;但是他的监控状态依然保持者&#xff0c;当指定的时间到了又会自动恢…

Webpack4干货分享(二),使用loader处理scss,图片以及转换JS

转载请注明出处&#xff1a; 葡萄城官网 &#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 原文出处&#xff1a; https://wanago.io/2018/07/16/webpack-4-course-part-two-webpack-4-course-part-two-loaders/今天继续我们的Webpack 4…

spring-data-jpa 介绍 复杂查询,包括多表关联,分页,排序

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 本篇进行Spring-data-jpa的介绍&#xff0c;几乎涵盖该框架的所有方面&#xff0c;在日常的开发当中&#xff0c;基本上能满足所有需求。…

重写laravel的request的校验器

protected function failedValidation(Validator $validator) {$error $validator->errors()->all();throw new HttpResponseException(response()->json([data>[],code>500,msg>$error[0]], 500)); }

如何检测C语言中的内存漏洞(leak)?

在动态分配的内存单元(即由函数malloc()或ealloc()分配的内存单元)不再使用却没有被释放的情况下&#xff0c;会出现内存漏洞。未释放内存单元本身并不是一种错误&#xff0c;编译程序不会因此报告出错&#xff0c;程序也不会因此而立即崩溃。但是&#xff0c;如果不再使用而又…

Oracle中row_number()、rank()、dense_rank() 的区别

link:https://www.cnblogs.com/qiuting/p/7880500.html转载于:https://www.cnblogs.com/Spring-Rain/p/9716213.html