先看一下如下代码, 思考一下印象更深刻哦!
#include <stdio.h>
int main(void) {
int a, b;
scanf("%d", &a);
b = (a > 0) ? 1 : 0;
printf("%d\n%d", a, b);
}
假设, 代码运行时, 输入正数5, 那么b应该匹配哪个?
先来解释印象下面这段话的读法:
b = (a > 0) ? 1 : 0;
如果a是正数, 那么b就等于1, 反之, b就等于0, 这个问好其实就是在问前面那个括号说: a大于0吗, 如果是的话我就把隔壁那个1赋给b, 如果不是的话我就把最后面那个给你, 用if...else来表示的话, 是这样的:
#include <stdio.h>
int main(void) {
int a, b;
scanf("%d", &a);
if (a > 0)
b = 1;
else
b = 0;
printf("%d\n%d", a, b);
}
好家伙, 来对比一下python的三元运算符:
a = int(input())
b = 1 if a > 0 else 0
print(a, b, sep='\n')
整么读这句话呢?
应该加上个括号就比较好理解:
b = (1 if a > 0 else 0)
那么这个括号的返回值是怎么个读法呢?
(返回1, 如果 a 大于0的前提下, 如果不是的话, 就返回0), 差不多是这个意思