Я хотел бы знать, есть ли эффективный способ преобразования целого числа со знаком в короткое без знака, где отрицательные целые значения просто устанавливаются равными 0 в коротком без знака (в C ANSI). Я знаю, что это можно сделать с помощью простого оператора if, подобного следующему:
int val1;
unsigned short val2;
val1=-5;
if(val1<0){
val2=0;
}else{
val2=(unsigned short) val1;
}
Это преобразование происходит очень часто в моей программе, и случай, когда val1
является отрицательным, очень редок, поэтому кажется излишним, чтобы этот оператор if выполнялся каждый раз.
Есть ли более эффективный способ сделать это преобразование?
if
, а затем использоватьelse
для менее часто встречающегося состояния. - person Don't You Worry Child   schedule 09.05.2014val2 = val1 * (val1 > 0);
и выполните измерения. - person pmg   schedule 09.05.2014inline
(например,inline si2us(int si, unsigned short *us)
) для обработки преобразования. Обратите внимание, чтоinline
относится к версии C99 и может не реализовываться компилятором Microsoft Visual Studio C. - person Some programmer dude   schedule 09.05.2014__inline
в компиляторе C MSVC. Но в любом случае это не ANSI C. - person Fred Foo   schedule 09.05.2014