Ми знаємо, що sizeof
це оператор, який використовується для обчислення розміру будь-якого типу даних та виразу, і коли операнд є виразом, дужки можна опустити.
int main()
{
int a;
sizeof int;
sizeof( int );
sizeof a;
sizeof( a );
return 0;
}
перше використання sizeof
неправильно, тоді як інші мають рацію.
Коли він компілюється за допомогою gcc, буде видано таке повідомлення про помилку:
main.c:5:9: error: expected expression before ‘int’
Моє питання полягає в тому, чому стандарт C не дозволяє такого роду операції. Викличе sizeof int
будь-яку неясність?
sizeof +(int)a
має перевагу перед тим, *&
як насправді компілювати ;-)
+
. Наприклад, sizeof +(char)a == sizeof(int)
через цілочисельне просування, мабуть, менше схильних до помилок просто вставляти в дужки, якщо взагалі виникає занепокоєння щодо виразу, розмір якого ви намагаєтеся прийняти. Тож я не впевнений, що зайшов би так далеко, що назвав це "використанням", хоча, зізнаюся, я це і використовував ...
sizeof (int)a
.