Frage

Ich schreibe eine einfache Funktion in C, deren Zweck es ist, eine 6 -Bit -Nummer zu nehmen, die ersten 3 Teile zu erarbeiten und darauf zu "R", "W" oder "O" zurückzugeben.

Wenn ich jedoch zusammenstelle, bekomme ich diese Warnung: "Rückkehr macht Ganzzahl aus Zeiger ohne Besetzung." Wenn ich das Programm dann ausführe, stelle ich fest, dass die Funktion einen seltsamen Charakter zurückgibt, der definitiv nicht zu den drei ist, nach denen ich nachging.

Was geht hier vor sich? Danke im Voraus.

Hier ist meine Funktion:

char
readorwrite(int opcode)
{
    if (opcode >> 3 == 4) {
        return "r";
    } else if (opcode >> 3 == 5) {
        return "w";
    } else {
        return "o";
    }
}
War es hilfreich?

Lösung

Das Problem ist, dass "R", "W" und "O" String -Konstanten sind, was bedeutet, dass ihr tatsächlicher Typ char [] oder char*ist. Das bedeutet, dass Ihre Funktion tatsächlich S-Zeiger zu einer nullterminierten Zeichenfolge zurückgibt. Für einzelne Zeichen sollten Sie stattdessen 'R', 'W' und 'O' verwenden.

Andere Tipps

Sie geben eine zurück const char *, dh ein Zeiger auf einen Ort im Speicher, an dem die Zeichenfolge "O" gespeichert ist, wenn Sie ein Zeichen „o“ zurückgeben sollten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top