Wie werden Integer-Typen implizit konvertiert?

Der folgende Code schlägt bei einer MISRA-Prüfung fehl. Die konkrete Fehlermeldung lautet:

(MISRA-C: 2004 10.1 / R) Der Wert eines Ausdrucks vom Typ Integer darf nicht implizit in einen anderen zugrunde liegenden Typ konvertiert werden, wenn es sich nicht um eine Konvertierung in einen breiteren Typ Integer mit derselben Vorzeichen handelt

<code>typedef enum _MyEnum { One, Two } MyEnum;
MyEnum MyVariable;

int foo(void)
{
    int result = 1;

    if (One == MyVariable)  // fails here with MISRA-C:2004 10.1/R
    {
        result = 2;
    }    
    return result;
}
</code>
Warum wird der logische Ausdruck konvertiert?Was wird hier konvertiert?Warum besteht der Code die MISRA-Prüfung, wenn ich tausche?One undMyVariable?

Bearbeiten: Der Compiler ist ein TI "MSP430 C / C ++ Compiler v4.0.0" mit enthaltener MISRA-Regelprüfung.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage