(int) + 4*5;
Чому це можливо (додавання типу зі значенням) ? (спробували з g ++ та gcc.)
Я знаю, що це не має сенсу (і не має ніякого ефекту), але я хочу знати, чому це можливо.
(int) + 4*5;
Чому це можливо (додавання типу зі значенням) ? (спробували з g ++ та gcc.)
Я знаю, що це не має сенсу (і не має ніякого ефекту), але я хочу знати, чому це можливо.
cppinsightsякий допомагає зрозуміти, як виглядає код з точки зору інтерфейсу компілятора. Він також має онлайн-версію, ви можете побачити, що він розповідає про ваш приклад (та сама `` дужка '', що і відповіді, які вам дали)
+(int)+ 4*5;і, -(int)- 4*5;і, -+-+-(int)-+-+- 4*5;і менш поетично;
Відповіді:
+Тут унарний +оператор , а НЕ бінарний оператор додавання . Тут ніяких додатків не відбувається.
Крім того, синтаксис (int)використовується для випуску тексту.
Ви можете перечитати це твердження як
(int) (+ 4) * 5;
який розбирається як
((int) (+ 4)) * (5);
що говорить,
+оператор до цілочисельного значення константи 4.int5Це схоже на те (int) (- 4) * (5);, де використання одинарного оператора є більш звичним.
У вашому випадку одинарний +і акторський склад int- обидва непотрібні.
(+ 4)не робить операндом+4 , це означає застосувати одинарний +до операнда 4, що дійсно є невдалим у випадку OP, але може спричинити цілочисельне просування або розпад масиву за інших обставин. Наприклад, char c = 0; sizeof +c == sizeof cце, мабуть, помилково і sizeof +"a", мабуть, не 2.
42;
Це трактується як ((int)(+4)) * 5. Тобто вираз +4(одинарний плюс-оператор, застосований до літералу 4), переданий для введення intз використанням стилю C, а результат помножений на 5.
(int)-4*5