我正在尝试找到一种方法来检查浮点数是否为负而不分支。
float a = -0.5;
int getSignOfa= *(int*)&a >> 31; //type-pun to int and get signed bit;
Run Code Online (Sandbox Code Playgroud)
这是检查浮点数有符号位的安全方法吗?
小智 6
从 C99 开始,您可以使用signbit(x)中的定义math.h来获取浮点数的符号位。x如果为正(未设置符号位),则返回 0 ;如果为负(设置符号位),则返回非零。