Насколько помню, в компиляторе Си от Майкрософта до какого-то момента «кешировались» строки, то есть при создании новой переменной бралась таже область памяти и в том случае, и соответственно при таком сравнении получалась истина. В новом компиляторе это пофиксили и каждая переменная содержащая строку это отдельная область памяти. Но не претендую на истину в последней инстанции