Or e não igual

Por que isso funciona?

#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

mas então isso não

#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 A resposta que desejo para ambos é "eu gosto de"

questionAnswers(6)

yourAnswerToTheQuestion