3 ms·
There is an example of negative array indexing within standard lib implementations. Functions like isprint(int c), which checks whether c is a printable ASCII
by avianes 5y ago
There is an example of negative array indexing within standard lib implementations.
Functions like isprint(int c), which checks whether c is a printable ASCII character, can take as input numbers between -128 and 127 or between 0 and 255.
To achieve this, implementations usually rely on single array indexable from -128 to 255 (a lookup table).
Example from the newlib:
https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/ctype/isprint.c;h=e34fbe28a2acf9088d5221de30adfefbfa644259;hb=HEAD https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=new...
And the array came (indirectly) from:
https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/ctype/ctype_.c;hb=8fba45f0ccc3b936edfb93671141bf3fe0b0ee5e https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=new...