三元操作符 ?和:直接可以看成是

?就是if语句

:简单的翻译成else语句,但是需要前后放上执行程序。

(1)举例说明:A > B ? A > C ? A : C : B > C ? B : C;这条语句代表什么意思呢?我们把if和esle带入进入看

if(A>B)

{

if(A>C)

{执行程序A}

else

{执行程序C}

}

else

{

执行程序

if (B>C)

{执行程序B}

else

{执行程序C}

}

(2)不过这样看上去还是太复杂,我们把程序分类,加上括号后调理看上去就简单多了

(A > B ?)( A > C ? A : C ): (B > C ? B : C)

(3)下面我们分析一个比较复杂的宏定义

#define SHIF16(a) ((a)&0x0001?0: (a)&0x0002?1: (a)&0x0004?2: (a)&0x0008?3:\

(a)&0x0010?4: (a)&0x0020?5: (a)&0x0040?6: (a)&0x0080?7:\

(a)&0x0100?8: (a)&0x0200?9: (a)&0x0400?10:(a)&0x0800?11:\

(a)&0x1000?12:(a)&0x2000?13:(a)&0x4000?14: 15)

我们看后半段 ((a)&0x0001?0: (a)&0x0002?1: (a)&0x0004?2: (a)&0x0008?3:\

(a)&0x0010?4: (a)&0x0020?5: (a)&0x0040?6: (a)&0x0080?7:\

(a)&0x0100?8: (a)&0x0200?9: (a)&0x0400?10:(a)&0x0800?11:\

(a)&0x1000?12:(a)&0x2000?13:(a)&0x4000?14: 15)

因为&的运算符的优先级要比:和?都要高,所以我们把(a)&0x0001看成一个整体A0,代表最低位第0位是真还是假,以此类推;

就变成:(A0?0:A1?1:A2?2:A3?3:A4?4:A5?5:A6?6:A7?7:A8?8:A9?9:A10?10:A11?11:A12?12:A13?13:A14?14:15)

这个太难看懂了

我们就取三个分析下

(A0?0:A1?1:A2?2:3)如果是这条语句,那么是什么意思呢?

我们用括号法来分析下:

(A0?) 0 : {(A1?)1: [(A2?)2:3 ] }

if(A0)//A0是真

{

//那就是0

}

else

{

if(A1)

{

//那就是1

}

else

{

if(A2)

{

//那就是2

}

else

{

//那就是3

}

}

}

注释:

(a)&0x0001 ->是最低位

(a)&0x0002 ->是最第1位

(a)&0x0004 ->是最第2位

(a)&0x0008 ->是最第3位

(a)&0x0010 ->是最第4位

(a)&0x0020 ->是最第5位

.

.

.

(a)&0x4000->是最第14位

!!!!!!!!!!!!具体这个宏定义是啥作用评论区来说说吧!!!!!!!

和在c语言,?和:在C语言中的详解相关推荐

  1. c语言实现顺序表源程序,C语言实现静态顺序表的实例详解

    C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识.只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作. ...

  2. c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习

    C语言基本数据类型:整型(int)用法详解 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.以后, ...

  3. C语言求最大公约数三种方法详解

    C语言求最大公约数三种方法详解 题目要求 常用写法(穷举法) 辗转相减法 辗转相除法 main函数 整体代码 题目要求 运行最大公约数的常用算法,并进行程序的调式与测试. 常用写法(穷举法) 从两个数 ...

  4. C语言结构体与指针ppt,c语言指针和结构体:链表详解.ppt

    c语言指针和结构体:链表详解.ppt 1,第十一章 链表,2,例跳马.依下图将每一步跳马之后的位置x,y放到一个"结点"里,再用"链子穿起来",形成一条链,相邻 ...

  5. c枚举类型enum例题_C语言--enum,typedef enum 枚举类型详解

    原文:http://z515256164.blog.163.com/blog/static/32443029201192182854300/ 有改动 C语言详解 - 枚举类型 注:以下全部代码的执行环 ...

  6. C语言标量变向量的函数,GLSL 详解(基础篇)

    上节在绘制三角形的时候,简单讲解了一些着色器,GLSL 的相关概念,可能看的云里雾里的.不要担心,在本节中,我将详细讲解着色语言 GL Shader Language(GLSL)的一些基本的概念. P ...

  7. python r语言 结合 部署_(转)python中调用R语言通过rpy2 进行交互安装配置详解...

    python中调用R语言通过rpy2 进行详解 1.R语言的安装: 大家进行R语言的安装,在安装好R后,需要配置环境变量R才能进行使用. 对此电脑右键->选择高级设置->环境变量-> ...

  8. c语言自增自减5运算符详解,巧用C语言中的自增自减运算符

    黄建琼 摘要:自增自减运算符在C语言的编程过程中经常用到,具有重要的作用,而灵活使用自增自减运算符则是个难点.该文从几个例子入手,观察运行的结果,对结果进行分析,最后得出结论.以期能使初学者避重就轻, ...

  9. java 泛化_Java语言class类用法及泛化(详解)

    这篇文章主要介绍了Java语言class类用法及泛化(详解),大家都知道Java程序在运行过程中,对所有的对象进行类型标识,也就是RTTI.这项信息记录了每个对象所属的类.虚拟机通常使用运行时类型信息 ...

  10. c语言void结尾,C语言中void*详解及应用

    void在英文中作为名词的解释为"空虚:空间:空隙":而在C语言中,void被翻译为"无类型",相应的void *为"无类型指针".void ...

最新文章

  1. 虚拟机的ubunt系统在登录界面循环往复,登录不进去问题
  2. 骂骂咧咧的 fastreport 数据隔行换色
  3. Spring Boot2.x-09 基于Spring Boot 2.1.2 + Mybatis使用自定义注解实现数据库切换
  4. 身体有恙,此段时间BLOG暂停更新
  5. 【图像处理】直方图均衡化(附带Matlab及OpenCV3自编程实现代码)
  6. android module 加载.so,关于Android Studio主Module与依赖Module同时引入so库的问题
  7. MongoDB DBA 实践6-----MongoDB的分片集群部署
  8. 有人做linux源码注释嘛,linux内核工作队列讲解和源码详细注释
  9. 【开源毕设】一款精美的家校互动APP分享——爱吖校推 [你关注的,我们才推](持续开源更新2)...
  10. wxpython控件自适应窗口大小
  11. Hive内部表外部表转化分析(装)
  12. python程序设计题库-知到智慧树_Python程序设计基础_完整免费答案
  13. tpadmin隐藏index.php,百度云服务器tp5框架布署,隐藏路径中的index.php
  14. 杭电、POJ、ZOJ ACM刷题顺序和题目分类详解
  15. 电脑云便签怎么在桌面日历月视图上新增便签记录事情?
  16. MATLAB摄像头实时图像处理
  17. CSS3毛玻璃的几种效果
  18. java绝对值怎么取
  19. 使用指针实现strcpy函数的功能
  20. 山西大同大学计算机科学与技术在哪个校区,山西大同大学有几个校区及校区地址 哪...

热门文章

  1. 【Java】数值计算排雷指南
  2. 【Java】基于IDE的JUnit软件测试入门
  3. contains()+replaceFirst()进行substring计数(洛谷P3741题题解,Java语言描述)
  4. 【数学】【CF27E】 Number With The Given Amount Of Divisors
  5. 程序员必须关注的技术趋势,内附PDF下载链接
  6. c++ - 在终端中,cout不显示任何内容
  7. 基于Gulp的简易前端自动化工程搭建
  8. centos: firewalld 一
  9. Java笔试题解答和部分面试题
  10. 一些总是记不住又容易搞混淆的东西(不断更新)