Vergleich zwischen unsigned int und unsigned char

Habe ich ein unsigned char-array, wie Data[2]. Ich brauchte es zu vergleichen mit einer Ausgabe einer Funktion zurückgeben unsigned int.

habe ich versucht zu werfen Data[2] in unsigned int und Umgekehrt. Es hat nicht funktioniert.

Was ich versuche zu tun ist:

if (Data[2] == ReadFlash2(40))
{
    //Do Something.
}

ReadFlash2 ist eine Funktion zurückgeben unsigned int, während Data[2] ist ein unsigned char.

Habe ich versucht zu casten jedem von Ihnen, aber es hat nicht funktioniert.

Gibt es etwas, was ich falsch mache? Welche soll ich gegossen, und auf was soll ich es umwandeln?

Dank.

Bearbeiten:
der code für die Readflash-Funktion:

unsigned int ReadFlash2(unsigned int Addr) //use as Read Function 
{
pMem = (unsigned int*)MEM_STR_ADR; 
pMem += Addr; 
Nop(); 
return(*pMem); 
}
  • Was ist der Fehler, den Sie haben?
  • die if Vergleich ist false, was bedeutet, es geht nicht durch.
  • Was ist der Wert von Data[2] und der Wert der ReadFlash2(40)?
  • Sind Sie sicher, dass die zahlen gleich sind?
  • ja, in diesem Fall sind beide enthält 1
  • Data[2] = 1 und ReadFlash(40)= 1
  • das ist das, was debugger Ihnen gesagt? Oder denen sind Ihre eigenen Berechnungen?
  • ich überprüfte jedes der Ausgänge separat. es ist aus dem debugger.
  • Was " die definition der Daten Aussehen? Nur eine wilde Vermutung, aber arbeiten Sie an einem 16-bit-MCU und versucht zu vergleichen, das ganze zwei-element-array (nicht nur ein einzelnes element) auf die int?
  • Hier ist ein Beispiel, das funktioniert: ideone.com/99b04Y Können Sie ein ähnlich einfaches Beispiel, das nicht funktioniert?
  • was meinst du mit separat? Bitte geben Sie den code für die Funktion und die definition und Zuweisung für die Data array. Wenn beide Werte 1 es egal, was für Datentypen das sind die if Aussage bewerten soll zu true. Wenn es ausgewertet wird false sollten Sie sich für den Fehler woanders.
  • es ist 32 bit PIC32MX795. die definition der Daten sieht wie folgt aus: unsigned char Data[30];
  • Es ist etwas anderes passiert. Können Sie reduzieren es auf ein SSCCE und posten Sie das? Ist es MPLAB X oder früher? Welcher compiler?
  • ich habe gerade bearbeitet die Frage, gehören die ReadFlash2 Funktion.
  • ich glaube, dass sonst nichts Los ist, weil, wenn ich entfernen Sie den Vergleich, funktioniert perfekt. ich habe auch geschickt, die zwei Werte an den host zu prüfen, und es ist das gleiche. also es zu tun haben, mit type. es ist MPLAB 8.89.

InformationsquelleAutor Liban | 2013-06-19
Schreibe einen Kommentar