我想知道是否有一种有效的方法可以将有符号整数转换为无符号短整数,其中负整数值在无符号短整数(在 C ANSI 中)中被简单地设置为 0。我知道这可以通过如下简单的 if 语句来完成:
int val1;
unsigned short val2;
val1=-5;
if(val1<0){
val2=0;
}else{
val2=(unsigned short) val1;
}
这种转换在我的程序中经常发生,并且 val1
为负的情况非常罕见,所以每次都出现这种 if 语句似乎有点过分了。
有没有更有效的方法来进行这种转换?
最佳答案
通常有效的一件事是直接在表达式中使用 bool 结果(0
或 1
)。
而不是你的 if
/else
构造 try
val2 = val1 * (val1 > 0);
如果您追求绝对最佳性能,请不要忘记使用不同的编译器选项来衡量不同的代码。
关于将 signed int 转换为 unsigned short,在 C 中将负值设置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23560626/