Ми знаємо, що 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.