в C (и других языках, вероятно) один |
или &
сравнение побитовое.
Двойной ||
или &&
является логическим сравнением.
Edit: Обязательно прочитайте комментарий Мердада в ниже относительно «без короткого замыкания»
На практике, так как true
часто эквивалентен 1
и false
часто эквивалентно 0
побитовое сравнение иногда может быть действительным и возвращает точно такой же результат.
Был когда-то критически важный программный компонент, на котором я запускал статический анализатор кода, и он указывал, что побитовое сравнение использовалось там, где должно было быть логическое сравнение. Поскольку он был написан на языке C и из-за расположения логических сравнений, программное обеспечение отлично работало с любым из них. Пример:
if ((altitide > 10000) & (knots > 100))
...
какой язык? –
На каком языке вы говорите? –
C# и javascript –