Целочисленные типы, типы с плавающей запятой и типы указателей могут быть преобразованы в bool.Для всех них значение 0 преобразуется в false, а ненулевое значение преобразуется в true.
Итак, если s2 - s1
оценивается как 0, тогда test
равно false.В противном случае test
является истинным.
Поскольку s1
и s2
являются указателями, s2 - s1
дает разницу между ними (насколько далеко друг от друга находятся адреса).Если они указывают на один и тот же адрес, то разница будет равна 0. Если они указывают на разные адреса, результат будет отличен от нуля.Таким образом, все, что указывает test
, указывает на то, указывают ли s1
и s2
на разные адреса.s1 != s2
даст точно такой же результат и, вероятно, будет иметь больше смысла.
Однако, учитывая, что значения для s1
и s2
жестко запрограммированы и гарантированно указывают на разные адреса,тест не имеет никакого смысла.Это может иметь смысл в другой программе, особенно в той, где s1
и s2
передаются в функцию, и у вас нет возможности заранее узнать, действительно ли они одинаковы.