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
阅读(11170) | 评论(0) | 转发(0) |