Articles of padrões

Por que o comportamento não especificado de `i = ++ i + 1`?

Considere a seguinte citação da norma C ++ ISO / IEC 14882: 2003 (E) (seção 5, parágrafo 4): Exceto onde indicado, a ordem de avaliação de operandos de operadores individuais e subexpressões de expressões individuais, e a ordem na qual os efeitos colaterais ocorrem, não é especificada. 53) Entre o ponto de seqüência anterior e […]

Por que a correspondência de padrões no Scala não funciona com variables?

Tome a seguinte function: def fMatch(s: String) = { s match { case “a” => println(“It was a”) case _ => println(“It was something else”) } } Este padrão combina muito bem: scala> fMatch(“a”) It was a scala> fMatch(“b”) It was something else O que eu gostaria de poder fazer é o seguinte: def mMatch(s: […]

Por que o C ++ gera números negativos ao usar o modulo?

Matemática : Se você tem uma equação como esta: x = 3 mod 7 x poderia ser … -4, 3, 10, 17, … ou mais geralmente: x = 3 + k * 7 onde k pode ser qualquer inteiro. Eu não sei de uma operação de módulo é definida para matemática, mas o anel de […]

Comprimento de computação de uma string C em tempo de compilation. Isso é realmente um constexpr?

Eu estou tentando calcular o comprimento de uma string literal em tempo de compilation. Para fazer isso, estou usando o seguinte código: #include int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf(“%d %d”, length(“abcd”), length(“abcdefgh”)); } Tudo funciona como esperado, o programa imprime […]

Módulos C ++ – por que eles foram removidos do C ++ 0x? Eles estarão de volta mais tarde?

Acabei de descobrir esse antigo rascunho do C ++ sobre módulos em C ++ 0x. A idéia era sair do atual sistema .h / .cpp escrevendo apenas arquivos .cpp que gerariam arquivos de módulo durante a compilation, que por sua vez seriam usados ​​pelos outros arquivos .cpp. Isso parece um ótimo recurso. Mas a minha […]

C / C ++ int vs int * (pointers versus notação de matriz). Qual é a diferença?

Eu sei que as matrizes em C são apenas pointers para dados armazenados sequencialmente. Mas quais diferenças implicam a diferença na notação [] e *. Quero dizer, em TODO o contexto de uso possível. Por exemplo: char c[] = “test”; se você fornecer essa instrução em um corpo de function, ela alocará a string em […]

É `long` garantido pelo menos 32 bits?

Pela minha leitura do C ++ Standard, eu sempre entendi que os tamanhos dos tipos fundamentais integrais em C ++ eram os seguintes: sizeof(char) <= sizeof(short int) <= sizeof(int) <= sizeof(long int) Eu deduzi isso de 3.9.1 / 2: Existem quatro tipos inteiros assinados: “char assinado”, “short int”, “int” e “long int”. Nessa lista, cada […]

Chamada de método de membro estático C ++ na instância de class

Aqui está um pequeno programa de teste: #include class Test { public: static void DoCrash(){ std::cout<< "TEST IT!"<< std::endl; } }; int main() { Test k; k.DoCrash(); // calling a static method like a member method… std::system("pause"); return 0; } No VS2008 + SP1 (vc9) ele compila bem: o console exibe apenas “TEST IT!”. Tanto […]

O que o SQL Standard diz sobre o uso do backtick (`)?

Uma vez eu tinha passado horas na debugging de uma simples consulta SQL usando mysql_query() em PHP/MySQL apenas para perceber que eu havia perdido o nome do nome da tabela. A partir de então, eu sempre usava nomes de tabelas. Mas quando eu usei o mesmo em SQLite/C++ , o símbolo nem é reconhecido. É […]

Devo usar char ** argv ou char * argv em C?

Eu só estou aprendendo C e queria saber qual desses eu deveria usar no meu método principal. Existe alguma diferença? Edit: Então, qual é o mais comum de usar?