gpt4 book ai didi

将 signed int 转换为 unsigned short,在 C 中将负值设置为零

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:37 25 4
gpt4 key购买 nike

我想知道是否有一种有效的方法可以将有符号整数转换为无符号短整数,其中负整数值在无符号短整数(在 C ANSI 中)中被简单地设置为 0。我知道这可以通过如下简单的 if 语句来完成:

int val1;
unsigned short val2;

val1=-5;
if(val1<0){
val2=0;
}else{
val2=(unsigned short) val1;
}

这种转换在我的程序中经常发生,并且 val1 为负的情况非常罕见,所以每次都出现这种 if 语句似乎有点过分了。

有没有更有效的方法来进行这种转换?

最佳答案

通常有效的一件事是直接在表达式中使用 bool 结果(01)。

而不是你的 if/else 构造 try

val2 = val1 * (val1 > 0);

如果您追求绝对最佳性能,请不要忘记使用不同的编译器选项来衡量不同的代码。

关于将 signed int 转换为 unsigned short,在 C 中将负值设置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23560626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com