Freigeben über


Warnung C6340

Fehlende Übereinstimmung beim Vorzeichen: type wird als Param(Zahl) übergeben, wenn ein (signierter|nicht signierter) Typ im Aufruf von Funktionsname erforderlich ist.

Hinweise

Diese Warnung gibt an, dass das Zeichen des Typs, der vom Formatbezeichner und dem Zeichen des übergebenen Ausdrucks erforderlich ist, nicht übereinstimmen. Die Verwendung des falschen Formatbezeichners ist nicht definiertes Verhalten. Um die Warnung zu beheben, stellen Sie sicher, dass die Formatbezeichner mit den Typen der übergebenen Ausdrücke übereinstimmen.

Name der Codeanalyse: FORMAT_SIGN_MISMATCH

Beispiel

#include <cstdio>

void f(unsigned char a)
{
    printf("%hhd\n", a); // C6340 emitted.
}

Es gibt mehrere Möglichkeiten, das nicht definierte Verhalten zu beheben. Wir können den Formatbezeichner ändern:

#include <cstdio>

void f(unsigned char a)
{
    printf("%hhu\n", a); // No C6340 emitted.
}

Wir können den Typ des Ausdrucks ändern:

#include <cstdio>

void f(signed char a)
{
    printf("%hhd\n", a); // No C6340 emitted.
}

Als letzte Möglichkeit, wenn überlauf nicht geschehen kann, können wir eine Umwandlung einführen:

#include <cstdio>

void f(long long a)
{
    printf("%d\n", static_cast<int>(a)); // No C6328 emitted.
}

Weitere Informationen

C6328