It has a 20-bit architecture, and people did (and still do) use it
that way.
It's vaguely plausible to call the VM86 (real-mode) x86 arch 20-bit, but
it's a stretch, as no processor-visible registers, and no ALU ops are
20-bits long. It's 16-bit in the same sense that the later PDP-11s with
various memory extension schemes were 16-bit. It still gets used, to some
extent, because it's the boot environment of PCs.
The 286 could plausibly be called a 24-bit segmented machine, and shares
much of the memory model from it's IBM FS, OS/36 (which grew up to be
AS/400) and intel 432 anticedants. A nice protected architecture for
Pascal, PL/1, COBOL, and other HLL's of the age. You certainly couldn't
call it a "C machine" other than when used within it's 16-bit, flat memory
model (small) modes. Everything else required language extensions ("near"
and "far" pointers), and any pointer misbehaviour sanctioned by the
standard and by the implmentations could reasonably be said to be limited
to those extensions, anyway. The fact that as much milage was had out of
C in that environment is a testament to the industry's determination and
enthusiasm. When compilation was done so that non-standard pointer
extensions weren't required in the source, then it should have been the
system run-time that gave ground, rather than the standard. I doubt very
much that any new development work is being done in 286 protected mode,
anywhere.
And now the x86-64 is coming, and everything old will be new again.
The x86-64 is a lovely architecture for a C machine. Specifically, it has
jetissoned much of the segmentation issues. All 64-bits worth of address
space can be loaded into any "pointer" register, and manipulated with the
full compliment of integer and logical operations (because the pointer
registers are also the integer ALU registers), and the only time you can
ever get a peep out of a trap handler is if you try to actually
access memory at an address not mapped into the process' address space.