Zwei Variablen in einer 'for' - Schleife in C
Ich bin ein wenig code schreiben, wo ich zwei Variablen in einer for
Schleife. Macht den code unten scheinen in Ordnung?
Es gibt mir das erwartete Ergebnis.
for (loop_1 = offset,loop_2 = (offset + 2); loop_1 >= (offset - 190),loop_2 <= (190 + offset + 2); loop_1--,loop_2++)
{
if ( (*(uint8_t*)(in_payload + loop_1) == get_a1_byte(bitslip)) &&
((*(uint8_t*)(in_payload + loop_2) == get_a2_byte(bitslip)))
)
{
a1_count++;
}
}
Aber ich bin immer eine compiler-Warnung, die sagt:
Datei.c:499:73: warning: left-hand operand des Komma-Ausdrucks hat keinen Effekt
Was bedeutet das?
wow, ich bin starrte auf diesen code und egal wie hart ich versuche ich kann kaum verstehen, was es tut 🙂 ich habe immer bewundert, C-Programmierern.
Wenn Sie wollen, kann ich das schreiben in C#, aber es werden die gleichen sein 🙂
oh, ich hoffe inständig Sie würde nicht schreiben, so etwas in C#. Ich meine Hinweise? Komm, der BCL hat sicherlich auch etwas eingebaut, um die Erreichung dieses (was auch immer dieser code versucht zu erreichen).
Wenn Sie wollen, kann ich das schreiben in C#, aber es werden die gleichen sein 🙂
oh, ich hoffe inständig Sie würde nicht schreiben, so etwas in C#. Ich meine Hinweise? Komm, der BCL hat sicherlich auch etwas eingebaut, um die Erreichung dieses (was auch immer dieser code versucht zu erreichen).
InformationsquelleAutor liv2hak | 2011-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist die test-Bedingung:
Bedeutet dies nicht, prüfen Sie, ob beide Teile. (Gut, tut es, aber nur das Ergebnis des zweiten Teils verwendet wird.)
Ändern
wenn Sie möchten, dass beide Bedingungen überprüft werden.
InformationsquelleAutor Mat
Matte ist richtig, aber Sie sollten wahrscheinlich betrachten Sie vereinfacht den code:
(Sie können natürlich hissen die Berechnung der
in_payload + offset
aus der Schleife zu, aber der Optimierer wird mit ziemlicher Sicherheit das für Sie tun).InformationsquelleAutor caf
Für Ihre semantisch Problemen finden Sie caf s Antwort. Erste versuche gerade deine Gedanken vor dem Start zu geben.
Einem Missverständnis ist, dass Sie mischen zwei unterschiedliche Konzepte von C, Initialisierung und Zuweisung. Offensichtlich in Ihrem code, den Sie denken, in der Linien von einer Initialisierung, wo die Sache mit dem Komma perfekt funktionieren würde. Also das nächste mal, wenn Sie auf ein ähnliches problem, nur mit lokalen Variablen. Diese sind gültig Konstrukte in C99, und eine gute Sache zu verwenden, sowieso.
Nicht Sie geben uns den Typ der Variablen aber nur dann, wenn
size_t
Ihrefor
- Anweisung Aussehen würdeInformationsquelleAutor Jens Gustedt