.TH "al_fixsub(3alleg5) Allegro reference manual" "" "" "" "" .SH NAME .PP al_fixsub \- Allegro 5 API .SH SYNOPSIS .IP .nf \f[C] #include\ al_fixed\ al_fixsub(al_fixed\ x,\ al_fixed\ y); \f[] .fi .SH DESCRIPTION .PP Although fixed point numbers can be subtracted with the normal \f[C]\-\f[] integer operator, that doesn\[aq]t provide any protection against overflow. If overflow is a problem, you should use this function instead. It is slower than using integer operators, but if an overflow occurs it will set Allegro\[aq]s errno and clamp the result, rather than just letting it wrap. .PP Example: .IP .nf \f[C] \ \ \ \ al_fixed\ result; \ \ \ \ /*\ This\ will\ put\ 4965\ into\ `result\[aq].\ */ \ \ \ \ result\ =\ al_fixsub(al_itofix(5000),\ al_itofix(35)); \ \ \ \ /*\ Sets\ errno\ and\ puts\ \-32768\ into\ `result\[aq].\ */ \ \ \ \ result\ =\ al_fixsub(al_itofix(\-31000),\ al_itofix(3000)); \ \ \ \ assert(!al_get_errno());\ /*\ This\ will\ fail.\ */ \f[] .fi .SH RETURN VALUE .PP Returns the clamped result of subtracting \f[C]y\f[] from \f[C]x\f[], setting Allegro\[aq]s errno to ERANGE if there was an overflow. .SH SEE ALSO .PP al_fixadd(3alleg5), al_fixmul(3alleg5), al_fixdiv(3alleg5), al_get_errno(3alleg5).