Кто-нибудь объяснит внутреннее различие if ('0') между C и PHP? В C, если ('0') получает значение false, а в PHP - true.Внутренняя разница if ('0') между C и PHP?
ответ
Ну, «C» язык, который датируется 1970-х годов, является хорошим чуть больше буквального чем PHP! :-)
Прежде всего, язык «C» на самом деле не имеет понятия «тип данных string
». «Ничего из этого не было изобрел».
Кроме того, компилятор «предположил, что вы действительно знали, что делаете». (То есть, «вы не будете его кормить»). Будучи очень важным языком, он предположил, что вы должны думать так же.
Быстро перетащите хотя бы одно человеческое поколение, и мы придем к «PHP». CPU теперь значительно более мощный, чем PDP-7, и память на порядок больше, и теперь мы пытаемся «сгибать интерпретацию вещей », чтобы лучше совместить " обычные человека « значения, а не другой путь вокруг.
Таким образом, PHP язык видит "0"
как„false
-y.“вместо того, чтобы ограничивать его точка-обзора на» конкретное представление хранения, "как C is designed (!) делать, PHP видит "0"
как «ноль» ... хотя, строго говоря, это «строка» ... и, следовательно, видит это как: «false
-y.»
Да ... «потенциальные интерпретации значения исходного кода»имеютдействительно„изменилось в сорок плюс (!) лет ...“
Nitpicking: по крайней мере, в C ''0'' (о котором спрашивает OP) не является« строкой », а просто символом« char ». – alk
Точно так. Но если вы более знакомы с другими языками, такими как PHP, это не выглядит так, как один. Следовательно, «C» будет внешне отображаться * принимать * ту же конструкцию исходного кода, но он будет рассматривать то, что он видит совершенно по-другому. Он увидит его как «char», и он просто может * скомпилировать его * без предупреждения. –
Мне нужно поправляться. '' 0'' является символом ** буква **, который в C представлен как 'int'. И Стандарт оставляет его открытым, какое значение он будет оценивать. В зависимости от поддерживаемого набора символов он * может * очень хорошо оценивать до '0', что бы сделать' if ('0') 'становиться' false'. Это не для ASCII, но :-) – alk
- 1. Разница между 0 и -0 в C++
- 2. C# разница между else if и if
- 3. Есть ли разница между if (intVar) и if (intVar! = 0)?
- 4. Разница между C++ между 0 и 0.0
- 5. разница между «\ 0» и «\ 0»
- 6. разница между обр [0] ++ и ++ обр [0]
- 7. C++: разница между 0. и 0.0?
- 8. В чем разница между -0 и 0?
- 9. Разница между If и Else If?
- 10. Разница между if (x) {foo(); } и x? foo(): 0;
- 11. разница между .IF и IF в сборе
- 12. Разница между if -e и if -f
- 13. разница между: IF IN и IF == питона
- 14. разница между IFNULL и IF
- 15. Разница между «try» и «if»
- 16. Разница между 0 и '0' в массиве
- 17. Разница между 0 и 0u
- 18. разница между objectAtIndex и [0]
- 19. Разница между {0} и calloc?
- 20. Разница между $ 0 и $ SHELL
- 21. Разница между C++ между виртуальными = 0; и пустая функция
- 22. В чем разница между выражениями PHP if?
- 23. Есть ли разница между использованием .GetValueOrDefault (0) и If (переменная, 0) с типами NULL?
- 24. В чем разница между if и elseif?
- 25. PHP - разница между двумя датами, возвращающимися 0
- 26. PHP - если проблема с заявлением. Разница между 0, NULL и ""
- 27. В чем разница между Switch и IF?
- 28. php 5 strpos() разница между возвратом 0 и ложным?
- 29. разница между `if` заявления
- 30. Разница между if (args.Length <1) и if (args.Length == 0 || args == null)
в C,' если („0“) ... 'будет оценивать в' true' потому, предполагая ASCII, ''0' == 0x30'. –