in C# I know that if we try to compare two structs with "==" operator
    S1 structObj1 = new S1(); //while S1 is a struct
    S1 structObj2 = new S1();
    if(structObj1 == structObj2)
    {}
it will fire a compile error because structs are stored in the stack and the "==" operator compares references...
but why doesn't this apply when we compare two integers or chars which are struct objects? aren't they stored in stack too?
 
    