Bug de compilador com parâmetro de modelo = vazio* - página 15

 

Aqui está a definição "certa" para você, já que você gosta de pegar em tudo))))

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

eles não são supérfluos! eles ajudam a ler a lógica de como a expressão é formada!

o número de parênteses afeta a velocidade? - a menos que afete a velocidade de digitação, mas ninguém a observa.... o número de parênteses que cada usuário digita em um dia na web é um excelente exemplo ))))

Esta é uma garantia de correção rápida e sem erros no futuro.

 
Dmitry Fedoseev:

Esta é uma garantia de revisões rápidas e sem erros no futuro.

lá! pelo menos alguém que possa escrever de uma forma curta e formal, eu sempre complico as coisas e escrevo muitas cartas... oops, aqui vamos nós novamente))))

 
Ilya Malev:

Aqui está uma definição "correta" para você, já que você gosta de escolher tudo))))

Outro exemplo de parênteses desnecessários: perseguir o númerode parêntesesdesnecessários - faltando os necessários

(( ~ MASK(( t),( n))) << t( b ))
Portanto, parênteses não são uma garantia de tal coisa, mas pelo contrário - relaxa
 

Você não precisava de parênteses ao redor t e n - eles não podiam ser compostos. Muito bem, já que estamos tendo uma conversa tão festiva, vamos considerar isto ))))

#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 ))))))  

Depois disso eu percebi ( long( 1 ) << N ) é 2 vezes mais rápido, mas não é essa a questão)

 
A100:

Outro exemplo de parênteses desnecessários: na busca do númerode parêntesesdesnecessários, faltam os necessários

Você colocou muitos parênteses ali como "desnecessários". Se alguém estabelece um objetivo de remover tantos parênteses quanto possível, para que o compilador não comece a jurar, talvez você esteja certo, mas este objetivo não vale a pena quando se quer escrever um código que será à primeira vista claro para ele e para os outros (especialmente considerando o destaque de parênteses duplos no editor).

 
Ilya Malev:

(Não tenho certeza sobre isso ))))

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

Um erro de tempo de compilação. O que era esperado?

 
A100:

Foi um erro de compilação. O que era esperado?

É apenas pela beleza da mesma. Há mais 128 definições anexas a esta definição para que ela funcione, mas é melhor poupar os leitores do ramo ))))

 
Igor Makanu:

eles não são supérfluos! eles ajudam a ler a lógica por trás da formação desta expressão!

Bem, se eles o ajudam, então Deus esteja com você. Somente seu posto era sobre "brevidade é a irmã do talento". Por isso, pergunto como esta afirmação pode ser combinada com um excesso de parênteses. Não preciso deles para entender a lógica. Isso significa que sou mais talentoso? )
 
Alexey Navoykov:
Eu não preciso deles para entender a lógica. Isso me torna mais talentoso? )

Outro objetivo para os Adeptos: sim, nós os vencemos por um deslizamento de terra).

Razão: