Wie ändere ich eine variable von einem Typ in einen anderen Typ eines in C?
Möchte ich es tun:
int main () {
bla bla bla
void *onetype;
switch (USER_INPUT_TYPE) {
CASE CONVERT_TO_CHAR:
convert onetype VOID TO CHAR >>> HOW???
CASE CONVERT_TO_INT:
convert onetype VOID TO INT >>> HOW???
LOT OF CASES...
}
}
Ja, ich weiß, Typumwandlung, aber type-casting ist eine 'temporäre' ändern.
So, gibt es eine Möglichkeit zu erreichen, es in C?
EDIT :
Stop Stop stop! Bitte, sehen Sie, was Sie tun, ist eine Art casting, ich WEIß, DAS verwendet wird, erstellen Sie eine weitere variable des wünschenswerten Typ, wie int i = (int) onetype, ich will das nicht, ich will etwas anderes wie onetype = (int) onetype, ohne Sie neu erstellen, ohne Zuweisung einer anderen Variablen.
Vielen Dank Jungs!
- Wenn Sie nicht wie die Antworten, es klingt wie das, was Sie wirklich wollen, kann nicht getan werden.
- Ich mochte die Antworten, aber es ist nicht die Antwort, die ich wollte...ich nur legen Sie Sie in der richtigen Art und Weise...sorry wenn sich jemand verletzt fühlt.
- Sie sagte: "ohne allcat[ing] eine andere variable". Die meisten Compiler mit Optimierungen eingeschaltet würde nicht mehr Speicher oder in Registern, erstellen Sie eine neue variable mit dem gewünschten Typ zu konvertieren, die alte variable (der unerwünschten Art) zu, solange Sie nicht brauchen, um zu halten die alte variable herum, als gut. Der compiler würde, wär die alte variable Toten und wiederverwenden von seinem Speicher oder register (solange es nicht statisch, global, oder auf die verwiesen wird, die durch einen Zeiger). Wenn Sie jemals benutzt einen debugger, und versuchen Sie, überprüfen Sie den Wert einer lokalen Variablen, aber Sie sagt Sie kann nicht, dies ist wahrscheinlich der Grund.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie wollen, ist run-time-type-information - variable, in der der Typ ist nur bestimmbar Laufzeit. C NICHT über diese Funktionalität in der Sprache - sobald das Programm kompiliert wird, die Typen sind gelöscht, und nur Speicher-blobs vorhanden sind. Dynamische Sprachen pflegen, geben Sie Informationen-und implementieren diese nativ.
Können Sie entwickeln Ihre eigenen " home-grown-Art-tagging-system:
Nun jedes mal, wenn Sie verwenden möchten Ihre tagged_t geben, müssen Sie implementieren, eine Voraussetzung für jeden möglichen Typ der variable, die Sie speichern, oder in der Lage zu bestimmen, ob ein Typ erlaubt ist in diesem Bereich der code oder nicht.
Es klingt wie das Szenario ist wie folgt
void* onetype
hält einen Zeiger auf eine stark typisierte variableUSER_INPUT_TYPE
sagt dir der Typ der variableWenn das der Fall ist, dann versuchen Sie die folgenden
Dies ist unter der Annahme, dass Sie wissen, für sicher, dass onetype Punkte in int. Mit dieser Art von casting ist unglaublich unsicher.