This question is for mellis more than anyone, but I figured I might as well post it publicly in case someone else might find it useful.
I've been going through the code that defines all the built-in functions to make sure I understand what's going on, and I noticed this in shiftOut:
digitalWrite(dataPin, !!(val & (1 << i)));
I'm wondering what the double exclamation is for; doesn't applying the NOT operator twice just leave the input unchanged? When I wrote my own version of a shiftOut function without them, it seemed to work fine; in the ShiftOut tutorial
they don't have them.
Any insight? Thanks!