O y no igual

¿Por qué funciona esto?

#include <iostream>
#include <string>
using namespace std;
int main(){
string s="a";
if((s=="cm")||(s=="in")||(s=="ft")||(s=="m"))
        cout<<s+" Is an illegal value";
else
        cout<<"I like "+s;
        return 0;
} 

http: //ideone.com/7pnY

pero entonces esto no

#include <iostream>
#include <string>
using namespace std;
int main(){
string s="a";
if((s!="cm")||(s!="in")||(s!="ft")||(s!="m"))
        cout<<s+" Is an illegal value";
else
        cout<<"I like "+s;
        return 0;
}  

http: //ideone.com/TXUX La respuesta que quiero para ambos es "Me gusta".

Respuestas a la pregunta(6)

Su respuesta a la pregunta