2 ms·
That is incorrect :-). sizeof is an operator in C, and does not need parenthesis any more than pointer operator *. It is true that programmers frequently think
by cjensen 3y ago
That is incorrect :-).
sizeof is an operator in C, and does not need parenthesis any more than pointer operator *. It is true that programmers frequently think of it as a function and use parenthesis.
- teo_zero 3y agoIt's not that simple! To begin with, sizeof has two syntaxes: the first, which is the one you seem to refer to, is simply sizeof expression where expression involves variables and constants, not types. The second is sizeof (type) where the parentheses are mandatory. Then, even in the first syntax, even if sizeof is listed among the operators, even if it doesn't look any different from "pointer operator ", nonetheless it has strange priority rules. For example sizeof (T) *x If it was a regular prefix operator obeying priority and right-to-left evaluation, this would mean: dereference x, cast it to T, and return its size. Instead the C standard forces the compiler to interpret it as: take the size of type T and multiply it by x.
- shric 3y agoHilariously I've been down voted, even though you absolutely need sizeof (char) because it's a type. Given char x; sizeof x is fine. I know sizeof is an operator. I've been using C for 40 years.
- diath 3y agoThat's incorrect, from GCC: error: expected parentheses around type name in sizeof expression.