Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

C

Name: Anonymous 2009-10-20 17:13

Hey!

Is there a shortcut for this "pattern":
c = (a -b);
if (c != 0) return c;
c = (d-c);
if (c != 0); return c;
//...



I don't quite see how I can avoid storing c, because it matters if it's <0 or >0... or does it get optimized away anyway?

--

qsort, bsearch, and so on take a function whose arguments need to be "const void *p". Is there a way to cast them into the right type right in the function definition, without needing to either introduce two new variables, or cast them every time they're used?

Thanks /prog/!

Name: Anonymous 2009-10-20 19:43

This is where we see the elegance of Perl's a || b || c idiom. Too bad C forces logic results to 0 or 1.

Though it strikes me that I'd probably write the first example as
return a !=b?a-b:c != d?c- d: //...
Does it still get optimized the same, I wonder? *lazy*

For the second, you can cast the function pointer to void* when you pass it to bypass the type checking.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List