06三目运算符在C和C++中的变化
来源:互联网 发布:nginx url 重写 编辑:程序博客网 时间:2024/06/11 11:11
单目运算符是指:运算对象只有一个的运算符;如:取正(+)、取负(-)、取反(^)、或(|)、与(&)等等;
双目运算符是运算对象有两个的;如:加(+)减(-)乘(*)除(/)、自加(++)、自减(–)、逻辑与(||)、逻辑或(&&)、取余(%)、赋值(=)等;
三目运算符在c语言中我知道的就一个(?:),主要是:(表达式1?表达式2:表达式3)其用法是:当表达式1的值为真,执行表达式2,并以表达式2的值为此表达式的值;当表达式1值为假,就跳过表达式2,去执行表达式3,并以表达式3的值作为表达式的值;
首先需要明白什么是三目运算符,百度百科的定义如下:
- 对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式绝不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。例如,a?b:c?d:e将按a?b:(c?d:e)执行。1
- <表达式1>?<表达式2>:<表达式3>; “?”运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果。
- 可以理解为条件 ? 结果1 : 结果2 里面的?号是格式要求。也可以理解为是不是条件成立,条件成立为结果1否则为结果2。
即C++中必须指明:
* 输入的参数是什么类型,int还是double?
* 返回值为什么类型?int还是double,或者其他。
以上若干图片的要点是:
* 要想当左值,即出现在=号左边,则必须为返回的是变量的地址,而不是变量的数值
* 三目运算符在C和C++中的“表现不一样”,说到底还是两个编译器对三目运算符的操作不一样。在C中,三目运算符返回的是变量的值,是一个数值,而在C++中, 三目运算符返回的是变量的本身==即内存首地址。也就是说,C++编译器已经帮程序员提前做了取地址的工作。
具体的原理可参考最后一张图片,如下:
注意黄圈圈处的改动。
0 0
- 06三目运算符在C和C++中的变化
- 三目运算符在C语音和C++语言中的区别
- 三目运算符在java和C/C++中的使用区别
- C语言中的三目运算符
- [C++]引用和三目运算符
- c语言基本运算中的自增运算符和自减运算符以及三目运算符
- 细究三目运算符在python、C#、C异同
- C语言中的三目运算符 ?: 的新用法
- C语言表达式和运算符(三)
- C语言拾趣---关于if和三目运算符
- c/c++和python的三目运算符
- ++运算符在C/C++与C#/JAVA中的差异
- Java 和 C 中的位运算符
- C语言预处理中的 # 和 ## 运算符
- C语言中的运算符和表达式
- 【C#】C#中的表达式和运算符
- c语言中的“/”和“%”运算
- C语言的三目运算符
- git flow分支流
- NAT上网
- ReactiveCocoa框架菜鸟入门 系列
- Cassandra数据模型设计最佳实践(上)
- 推送/即时通讯方案
- 06三目运算符在C和C++中的变化
- allegro has extra pin
- 开发框架
- 产品经理成长手册-1前言-1.1 什么是产品经理
- final变量在多线程程序中的好处
- 【屏幕适配】Android屏幕适配解析
- Sublime Text 3 注册码
- android学习之消息机制与异步任务
- Java HashMap使用String,Long,Integer作为key的性能测试