Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

В чём отличие слабой типизации от сильной?

#c


В чём отличие слабой типизации от сильной ?
И почему язык Си слабо типизирован?
    


Ответы

Ответ 1



Строгая\Не строгая типизация определяет то, может ли язык неявно преобразовать данные различных типов. Си/C++: int a = 2; char b = 'L'; int c = a + b; Да, да, вам не показалось. Мы сложили число и символ (!) и получили новое число. Как это работает? Си неявно преобразовал символ 'L' в число — а именно в номер, который соответствует этому символу в таблице кодировок ASCII. Номер, соответствующий символу 'L' в этой таблице — 76. Таким образом, в c у нас окажется значение 2+76=78 Си/С++ - это языки с Не строгой типизацией. Python: a = 2 b = 'L' c = a + b # Здесь будет ошибка Python не позволяет нам складывать такие две разные сущности как «целое число» и «символ». Python - язык со строгой типизацией. Таким образом, языки со строгой типизацией не позволяют смешивать сущности разных типов в выражениях и не выполняют никаких автоматических преобразований, а языки не строгой типизацией, наоборот всячески способствуют, чтобы программист смешивал разные типы в одном выражении. Источник: pikabu - Поймут не только программисты (надеюсь).

Ответ 2



Сильная / слабая типизация (также иногда говорят строгая / нестрогая). Сильная типизация выделяется тем, что язык не позволяет смешивать в выражениях различные типы и не выполняет автоматические неявные преобразования, например нельзя вычесть из строки множество. Языки со слабой типизацией выполняют множество неявных преобразований автоматически, даже если может произойти потеря точности или преобразование неоднозначно. Примеры: Сильная: Java, Python, Haskell, Lisp; Слабая: C, JavaScript, Visual Basic, PHP.

Комментариев нет:

Отправить комментарий