tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: sizeof(type)



Am 25.11.2024 um 17:26 schrieb Edgar Fuß:
> Why does C's sizeof operator need parentheses when applied to a type?
>
> I suspect some ambiguity without the parentheses, but I fail do make up one.

The expression 'sizeof int * + 1' has two different interpretations:

sizeof(int) * (+1)
sizeof(int *) + 1

I found this out by running:

bison -o /dev/null -v --report-file=before usr.bin/xlint/lint1/cgram.y

Then I removed the parentheses from the rule 'T_SIZEOF T_LPAREN
type_name T_RPAREN' and ran Bison again.

There were 23 new conflicts. 21 of these were due to the keywords
'_Alignas', '__packed' and '__attribute__', and these are ambiguous in
many other places of the lint grammar, so I treated them as unsuspicious.

Two of the newly added conflicts were about the T_ASTERISK '*' token.
These gave me enough of a hint to come up with the above expression.

Roland



Home | Main Index | Thread Index | Old Index