看板 DFBSD_commit 關於我們 聯絡資訊
On Mon, 21 Mar 2005 21:14:14 +0100 Joerg Sonnenberger <joerg@britannica.bec.de> wrote: > On Mon, Mar 21, 2005 at 11:52:49AM -0800, Chris Pressey wrote: > > I wouldn't say it should return an int, though: IMO sizeof(x) ought > > to be treated just like any other numeric constant in C - that is, > > interpreted as signed or unsigned as the situation dictates. Why > > they introduced this gratuitous unorthogonality, I have no idea. > > Well, maybe that's not strictly true... I _can_ guess. Probably > > "sizeof always yields a positive number so we should force its type > > to be unsigned." But that makes exactly as much sense as "4 always > > yields a positive number so we should force its type to be > > unsigned," which is stupid. > > Because sizeof(char[2 << 31]) and sizeof(char[2 << 30]) should have > the same type. > > Joerg That's what coercion is for. 4294967296 and 2147483648 have the same type when used in the same expression, so why can't sizeof()s which evaluate to those constants do the same? -Chris