c - 这行代码是什么意思?

标签 c

我想知道这行代码是什么意思?

b = (gen_rand_uniform()>0.5)?1:0;

gren_rand_uniform() 是一个生成随机数 0 和 1 的函数。但是我不明白 >0.51:0 的含义。

我知道这应该是一个基本问题,请耐心等待。

谢谢!

最佳答案

我不认为 get_rand_uniform() 会如您所想。它可能看起来像这样:

float get_rand_uniform(void);

或者double。重点是,它返回一个随机十进制介于 0 和 1 之间。所以这个:

get_rand_uniform() > 0.5

检查该数字是否更接近 1 或 0。这是:

x ? y : z

是三元条件运算符,作用和这个一样:

if(x) { y } else { z }

除了三元运算符是一个表达式。所以所有这一切:

get_rand_uniform() > 0.5 ? 1 : 0

基本上是将随机 float 四舍五入为 1 或 0,并且:

b = get_rand_uniform() > 0.5 ? 1 : 0;

将随机选择的 1 或 0 分配给 b。我相信括号在这里是不必要的,但如果你喜欢它们,那就去吧。

关于c - 这行代码是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1567959/

相关文章:

c - 两个不同函数指针的 typedef 有效吗?

c - 我如何混合使用字符串文字和 float 并将它们连接成 C 中的一个字符串?

c - 使用C设计一个选择程序

c++ - C/C++ 编译器对运算符优先级/求值有多严格?

为32位cpu编译Linux内核模块

c - 如何找到float,double,long double的最大值

c - printf 中不存在扫描的 0

c - GCC 中的互斥锁在哪里定义?

c - Else If 条件优先于 while 条件?

c - 如何检查缓冲区是否可写?