ho avuto questa domanda dopo aver letto questa discussione Print an int in binary representation using CComprendere la condizione di uscita di un ciclo for
In un utente commento, hanno pubblicato questo ciclo for, che assegna un 1 o uno 0 alla posizione di bit al fine di convertire da un decimale int in char * binario.
for(; bits--; u >>= 1)
str[bits] = u & 1 ? '1' : '0';
Capisco perché non è necessario essere un valore inizializzato. Questa è la sintassi per un ciclo for che ho sempre saputo:
for (variable initialization; condition; variable update)
Quello che non capisco è come 'bit--' può essere una condizione di uscita. Per favore aiutami a capire come funziona questo codice (l'ho testato ed è valido).
Grazie.
Questo è ciò per cui i programmatori C sono maledetti !! Produrre codice che fa qualcosa ma nessuno lo capisce più. Non provare a scrivere un codice del genere !! bits-- decrementa la variabile bits, una volta zero, restituisce false – guitarflow
@guitarflow Coloro che capiscono C e i suoi idiomi comprendono tale codice bene come questo molto comune nel codice C (incluso il libro K & R), e direi che questo idioma deve essere appreso per comprendere il codice C in generale. Quindi perché dovrebbe essere scritto un nuovo codice (in qualsiasi lingua) per coloro che non comprendono la lingua? La forma più "universalmente comprensibile" può anche complicare le cose per un lettore che parla fluentemente il linguaggio, cioè "perché non ha usato [linguaggio comune], c'è qualcosa che mi manca?" – Arkku
@Arkku Capisco anche il codice , ma devi essere d'accordo non è un buon stile di programmazione. Scrivere il ciclo for in modo "standard" lo rende più leggibile a chiunque, non solo alle crepe. Anche nomi di variabili come "u" non sono un nome descrittivo;) – guitarflow