博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三目运算符和逗号表达式
阅读量:5240 次
发布时间:2019-06-14

本文共 1479 字,大约阅读时间需要 4 分钟。

三目运算符

三目运算符(a?b:c)可以作为逻辑运算的载体

规则:当a的值为真时,返回b的值;否则返回c的值

下面的程序运行结束后,a,b,c的值分别是多少?

int a = 1;int b = 2;int c = 0;c = a < b ? a : b;(a < b ? a : b) = 3;

例子1:关于三目运算符

#include
int main(){ int a = 1; int b = 2; int c = 0; c = (a > b ? a : b); // (a > b ? a : b) = 3; //error printf("a = %d,b = %d,c = %d\n",a,b,c); return 0;}

将上面代码修改为:

#include
int main(){ int a = 1; int b = 2; int c = 0; c = (a > b ? a : b); // (a > b ? a : b) = 3; //error *(a > b ? &a : &b) = 3; printf("a = %d,b = %d,c = %d\n",a,b,c); return 0;}

三目运算符(a?b:c)的返回类型

  • 通过隐式类型转换规则返回b和c中的较高类型
  • 当b和c不能隐式转换到同—类型时将编译出错

例子2:三目运算符的返回值类型

#include
int main(){ char c = 0; short s = 0; int i = 0; double d = 0; char* p = "test"; printf("%d\n",sizeof(c?c:s)); // 4 printf("%d\n",sizeof(i?i:d)); // 8 // printf("%d\n",sizeof(d?d:p)); return 0;}

逗号表达式

  • 逗号表达式是C语言中的“粘贴剂”
  • 逗号表达式用于将多个子表达式连接为—个表达式
  • 逗号表达式的值为最后—个子表达式的值
  • 逗号表达式中的前N-1个子表达式可以没有返回值
  • 逗号表达式按照从左向右的顺序计算每个子表达式的值
    exp1, exp2, exp3, …, expN

例子3:逗号表达式的应用,一行代码实现strlen()

#include 
#include
int strlen(const char* s) { return assert(s), (*s ? strlen(s + 1) + 1 : 0); } int main() { printf("len = %d\n", strlen("Nyist")); printf("len = %d\n", strlen(NULL)); return 0; }

小结

  • 三目运算符返回变量的值,而不是变量本身
  • 三目运算符通过隐式类型转换规则确认返回值类型
  • 逗号表达式按照从左向右的顺序计算每个子表达式的值
  • 逗号表达式的值为最后一个子表达式的值

转载于:https://www.cnblogs.com/yanyun888/p/9152029.html

你可能感兴趣的文章
让脚本在后台运行的方式
查看>>
判断一个点是否在,一组点围成的多变形中
查看>>
DevExpress GridView自动滚动
查看>>
MVC4.0 实现单一Action返回多种结果
查看>>
计算机基础10
查看>>
python 全栈开发,Day71(模型层-单表操作)
查看>>
javascript函数编程与currying
查看>>
淘宝首页上的一个设计
查看>>
回忆(四):通过反射获得私有构造实例化得到对象
查看>>
移动安全漏洞分析报告(转)
查看>>
android 7.x 单独编译framework失效问题
查看>>
游戏:切方块
查看>>
go 基础--3输出格式
查看>>
Go 系列教程 —— 33. golang中struct、json、map互相转化
查看>>
33. golang中struct、json、map互相转化2
查看>>
222
查看>>
The main resource set specified [/tmp/tomcat-docbase.5063501203886177649.7000] is not valid
查看>>
zuul网关过滤器实现对GET请求的参数替换
查看>>
一篇文章彻底搞懂异步,同步,setTimeout,Promise,async
查看>>
js常用正则
查看>>