2016-07-21 3 views

ответ

3

Ну, «C» язык, который датируется 1970-х годов, является хорошим чуть больше буквального чем PHP! :-)

Прежде всего, язык «C» на самом деле не имеет понятия «тип данных string». «Ничего из этого не было изобрел».

Кроме того, компилятор «предположил, что вы действительно знали, что делаете». (То есть, «вы не будете его кормить»). Будучи очень важным языком, он предположил, что вы должны думать так же.

Быстро перетащите хотя бы одно человеческое поколение, и мы придем к «PHP». CPU теперь значительно более мощный, чем PDP-7, и память на порядок больше, и теперь мы пытаемся «сгибать интерпретацию вещей », чтобы лучше совместить " обычные человека « значения, а не другой путь вокруг.

Таким образом, PHP язык видит "0" как„false -y.“вместо того, чтобы ограничивать его точка-обзора на» конкретное представление хранения, "как C is designed (!) делать, PHP видит "0" как «ноль» ... хотя, строго говоря, это «строка» ... и, следовательно, видит это как: «false -y.»

Да ... «потенциальные интерпретации значения исходного кода»имеютдействительно„изменилось в сорок плюс (!) лет ...“

+1

Nitpicking: по крайней мере, в C ''0'' (о котором спрашивает OP) не является« строкой », а просто символом« char ». – alk

+0

Точно так. Но если вы более знакомы с другими языками, такими как PHP, это не выглядит так, как один. Следовательно, «C» будет внешне отображаться * принимать * ту же конструкцию исходного кода, но он будет рассматривать то, что он видит совершенно по-другому. Он увидит его как «char», и он просто может * скомпилировать его * без предупреждения. –

+1

Мне нужно поправляться. '' 0'' является символом ** буква **, который в C представлен как 'int'. И Стандарт оставляет его открытым, какое значение он будет оценивать. В зависимости от поддерживаемого набора символов он * может * очень хорошо оценивать до '0', что бы сделать' if ('0') 'становиться' false'. Это не для ASCII, но :-) – alk

Смежные вопросы