Chinaunix首页 | 论坛 | 博客
  • 博客访问: 417184
  • 博文数量: 99
  • 博客积分: 65
  • 博客等级: 民兵
  • 技术积分: 1012
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-20 16:30
个人简介

linux kernel 工程师

文章分类

全部博文(99)

文章存档

2018年(5)

2017年(12)

2016年(27)

2015年(10)

2014年(43)

2012年(2)

我的朋友

分类: C/C++

2016-12-14 15:21:10

C语言中冒号表达式通常的写法如下:
c = expression ? a : b
表示如果表达式expression为true,则返回a值, 否则返回b值
但是如果写成
c = expression ? : b
那么意思是,如果表达式为真,则返回expression的值, 否则返回 b的值
如下例子express1.c:
#include
int main(int argc, char* argv[])
{
        int a;
        int b;
        int c;

        a = 10;
        b = 5;

        c= (a>b)? : b;

        printf("max is %d\n", c);

        return 0;
}

因为表达式(a > b)是个逻辑表达式,故该表达式要么等于1(true),要么等于0(false)。这里表达式(a > b)成立,那么返回值就是1(true)
编译:gcc express1.c
执行: ./a.out
max is 1


-------------------
如下例子express2.c:
#include
int main(int argc, char* argv[])
{
        int a;
        int b;
        int c;

        a = 10;
        b = 5;

        c= a ? :b;

        printf("max is %d\n", c);

        return 0;
}
因为表达式a 成立,那么返回值就是10
编译:gcc express2.c
执行: ./a.out
max is 10




阅读(10923) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~