2017-04-26 1 views
-4

Ich arbeite an einem Code in C++, aber ich bin mir nicht sicher, was tut. Ich nahm an, dass der Wert in diesem Array um 1 erhöht wurde, aber ich bin mir nicht sicher.
Auch, was ist die Funktion von assert(0); im Code? Vielen Dank für Ihre Hilfe!In C++, was bedeutet ein Inkrement zu einem 2D-Array? Was macht die Funktion assert (0)?

Der Codeblock ist:

for (i=0; i<1S; i++) 
{ 
    if (a[637][i] < a[637][15]) 
     { 
      a[637][i]++; 
      if (a[637][i] == 15) 
      assert(0); 
     } 
    } 
a[637][15] = 0; 

Edit: Leider vergaß ich den Hintergrund zu erwähnen.
Die Definition von a ist uint32_t a[2048][16]; also 637 und ich sind Werte aus einer bestimmten Schleife, um sie mit einem anderen 2D-Array zu vergleichen und dann wählen, welche Zeile zu vertreiben. Dies ist für eine Cache-Ersatz-Politik, aber ich war nur neugierig auf diese Fälle. Vielen Dank!

+2

Ich würde vorschlagen, wer auch immer das schrieb. – crashmstr

+0

Assert wird verwendet, um eine Gleichung auszuwerten und mit oder ohne eine Nachricht abzubrechen, wenn sie fehlschlägt. https://msdn.microsoft.com/en-us/library/9sb57dw4.aspx. – Nightforce2

+0

Können Sie uns die Definition von Array a zeigen? assert ist eine c-Funktion, die die Kompilierung stoppt, wenn das Argument falsch ist (d. h. 0), es sei denn, Makro NDEBUG ist definiert. – Outshined

Antwort

0

Anweisung a[637][i]++ erhöht den Wert der Zelle 637/i der zweidimensionalen Array a.

assert(0) einfach bricht die Programmausführung an dieser Stelle (seit Bedingung 0 bedeutet false, zu definieren, dass die Behauptung nie getroffen). Konferieren Sie diese SO answer für eine detailliertere Erklärung.