What does `return x ? : 1` mean in C language? [duplicate] stackoverflow
来源:互联网 发布:北京肝病三甲医院 知乎 编辑:程序博客网 时间:2024/04/30 15:31
#include <stdio.h>int f(int x){ return x?:1;}int main(){ printf("f %d\n", f(0)); printf("f %d\n", f(1)); return 0;}
And got the following output
f 1f 1
And when I change it to
int f(int x){ return x?:2;}
I am getting
f 2f 1
I just want to know whether this behavior (return 1 if nothing mentioned) is mentioned in the standard.
Answer:
The middle operand in a conditional expression may be omitted. Then if the first operand is nonzero, its value is the value of the conditional expression.
Therefore, the expression
x ? : y
has the value of x
if that is nonzero; otherwise, the value of y
.
This example is perfectly equivalent to
x ? x : y
In this simple case, the ability to omit the middle operand is not especially useful. When it becomes useful is when the first operand does, or may (if it is a macro argument), contain a side effect. Then repeating the operand in the middle would perform the side effect twice. Omitting the middle operand uses the value already computed without the undesirable effects of recomputing it.
- What does `return x ? : 1` mean in C language? [duplicate] stackoverflow
- What does the first letter "c" mean in "calloc"?
- What does the \0 symbol mean in a C string?
- What does the [Flags] Enum Attribute mean in C#?
- 29When we call objective c is runtime language what does it mean?
- What does 2>&1 mean?
- What does “warning: not all control paths return a value” mean? (C++)
- What does (Aborted) mean in HttpWatch?
- In Javascript, what does this underscore mean?
- What does ^M character mean in Vim?
- What does “%.*s” mean in printf?
- What does Using filesort mean in MySQL?
- What does it mean to write `static void * ptr = &ptr` in objective-c?
- ${1+"$@"}是什么意思 (What does ${1+"$@"} mean)?
- What does $NON-NLS-1$ mean?
- What does N+1 redundancy mean?
- What does N+1 redundancy mean?
- What does > /dev/null 2>&1 mean?
- 如何入门参加数学建模竞赛
- 存储控制器--SDRAM
- 钱币兑换
- 技术负责人如何搞定老板之我所见
- 字符串替换
- What does `return x ? : 1` mean in C language? [duplicate] stackoverflow
- Java Math类
- Random
- design_pattern_derivative_statistics
- android service 详解
- Java的第20年:Java和我的故事
- iOS开发之静态库.a的制作教程
- iOS AV Foundation 二维码扫描 04 使用合成语音朗读二维码内容
- 登陆界面