Bug del compilatore con il parametro template = void* - pagina 15

 

Ecco la definizione "giusta" per te, visto che ti piace prendertela con tutto)))

#define    POKE(t, i, b, n, v)     ( i & ((( ~ MASK( t, n )) << t( b )) | (( v & MASK( t, n )) << t( b ))))
 
Igor Makanu:

non sono superflui! aiutano a leggere la logica di come si forma l'espressione!

il numero di parentesi influisce sulla velocità? - a meno che non influisca sulla velocità di battitura, ma nessuno lo guarda.... il numero di parentesi che ogni utente digita in un giorno sul web è un primo esempio ))))

Questa è una garanzia di correzioni senza errori e veloci in futuro.

 
Dmitry Fedoseev:

Questa è una garanzia di revisioni senza errori e veloci in futuro.

ecco! almeno qualcuno che può scrivere in modo breve e formale, io complico sempre le cose e scrivo molte lettere... ops, ci risiamo)))

 
Ilya Malev:

Ecco una definizione "corretta" per te, visto che ti piace prendertela con tutto))))

Un altro esempio di parentesisuperflue: inseguire il numerodi parentesisuperflue - mancando quelle necessarie

(( ~ MASK(( t),( n))) << t( b ))
Quindi le parentesi non sono una garanzia di una cosa del genere, ma al contrario - rilassa
 

Non hai bisogno di parentesi intorno a t e n - non possono essere composte. Va bene, visto che stiamo avendo una conversazione così festosa, consideriamo questo ))))

#define  B64(M,N)      (( N ) < 32                                                                                       \
                    ? (( N ) < 16                                                                                       \
                    ? (( N ) <  8                                                                                       \
                    ? (( N ) <  4                                                                                       \
                    ? (( N ) <  2                                                                                       \
                         ?                                                                                              \
                      (( N ) <  1 ? M##0  : M##1  )                                                                     \
                    : (( N ) <  3 ? M##2  : M##3  ))    : (( N ) <  6 ?                                                 \
                      (( N ) <  5 ? M##4  : M##5  )                                                                     \ 
                    : (( N ) <  7 ? M##6  : M##7  )))   : (( N ) < 12 ? (( N ) < 10 ?                                   \
                      (( N ) <  9 ? M##8  : M##9  )                                                                     \
                    : (( N ) < 11 ? M##10 : M##11 ))    : (( N ) < 14 ?                                                 \
                      (( N ) < 13 ? M##12 : M##13 )                                                                     \
                    : (( N ) < 15 ? M##14 : M##15 ))))  : (( N ) < 24 ? (( N ) < 20 ? (( N ) < 18 ?                     \
                      (( N ) < 17 ? M##16 : M##17 )                                                                     \
                    : (( N ) < 19 ? M##18 : M##19 ))    : (( N ) < 22 ?                                                 \
                      (( N ) < 21 ? M##20 : M##21 )                                                                     \
                    : (( N ) < 23 ? M##22 : M##23 )))   : (( N ) < 28 ? (( N ) < 26 ?                                   \
                      (( N ) < 25 ? M##24 : M##25 )                                                                     \
                    : (( N ) < 27 ? M##26 : M##27 ))    : (( N ) < 30 ?                                                 \
                      (( N ) < 29 ? M##28 : M##29 )                                                                     \
                    : (( N ) < 31 ? M##30 : M##31 ))))) : (( N ) < 48 ? (( N ) < 40 ? (( N ) < 36 ? (( N ) < 34 ?       \
                      (( N ) < 33 ? M##32 : M##33 )                                                                     \
                    : (( N ) < 35 ? M##34 : M##35 ))    : (( N ) < 38 ?                                                 \
                      (( N ) < 37 ? M##36 : M##37 )                                                                     \
                    : (( N ) < 39 ? M##38 : M##39 )))   : (( N ) < 44 ? (( N ) < 42 ?                                   \
                      (( N ) < 41 ? M##40 : M##41 )                                                                     \
                    : (( N ) < 43 ? M##42 : M##43 ))    : (( N ) < 46 ?                                                 \
                      (( N ) < 45 ? M##44 : M##45 )                                                                     \
                    : (( N ) < 47 ? M##46 : M##47 ))))  : (( N ) < 56 ? (( N ) < 52 ? (( N ) < 50 ?                     \
                      (( N ) < 49 ? M##48 : M##49 )                                                                     \
                    : (( N ) < 51 ? M##50 : M##51 ))    : (( N ) < 54 ?                                                 \ 
                      (( N ) < 53 ? M##52 : M##53 )                                                                     \
                    : (( N ) < 55 ? M##54 : M##55 )))   : (( N ) < 60 ? (( N ) < 58 ?                                   \
                      (( N ) < 57 ? M##56 : M##57 )                                                                     \
                    : (( N ) < 59 ? M##58 : M##59 ))    : (( N ) < 62 ?                                                 \
                      (( N ) < 61 ? M##60 : M##61 )                                                                     \
                    : (( N ) < 63 ? M##62 : M##63 ))))))  

Dopo di che ho capito che ( long( 1 ) << N ) è 2 volte più veloce, ma non è questo il punto)

 
A100:

Un altro esempio di parentesi inutili: nella ricerca del numerodi parentesiinutili, si perdono quelle necessarie

Hai messo troppe parentesi come "non necessarie". Se uno si pone l'obiettivo di rimuovere quante più parentesi possibili, in modo che il compilatore non cominci a bestemmiare, forse hai ragione, ma questo obiettivo non vale quando si vuole scrivere del codice che sia a prima vista comprensibile per sé e per gli altri (soprattutto considerando la doppia evidenziazione delle parentesi nell'editor).

 
Ilya Malev:

(Non sono sicuro di questo )))

void f()
{
        ulong x = B64( ,3); //Error
}

Un errore di compilazione. Cosa ci si aspettava?

 
A100:

Era un errore di compilazione. Cosa ci si aspettava?

È solo per la sua bellezza. Ci sono altre 128 definizioni collegate a questa definizione perché funzioni, ma è meglio che risparmi i lettori del ramo )))

 
Igor Makanu:

non sono superflui! aiutano a leggere la logica dietro la formazione di questa espressione!

Beh, se ti aiutano, allora che Dio sia con te. Solo che il tuo post parlava di "la brevità è la sorella del talento". Quindi ti sto chiedendo come questa affermazione possa essere combinata con un'abbondanza di parentesi in eccesso. Non ne ho bisogno per capire la logica. Significa che ho più talento? )
 
Alexey Navoykov:
Non ho bisogno di loro per capire la logica. Questo mi rende più talentuoso? )

Un altro obiettivo per gli Adepti: sì, li abbiamo battuti con una frana).