Perguntas com a marcação «c++»

C ++ é uma linguagem de programação de uso geral. Foi originalmente projetado como uma extensão para C e tem uma sintaxe semelhante, mas agora é uma linguagem completamente diferente. Use esta tag para perguntas sobre o código (a ser) compilado com um compilador C ++. Use uma tag específica da versão para perguntas relacionadas a uma revisão padrão específica [C ++ 11], [C ++ 14], [C ++ 17] ou [C ++ 20] etc.

10
Existe uma maneira elegante e rápida de testar se os bits de 1 em um inteiro estão em uma região contígua?
Preciso testar se as posições (de 0 a 31 para um inteiro de 32 bits) com valor de bit 1 formam uma região contígua. Por exemplo: 00111111000000000000000000000000 is contiguous 00111111000000000000000011000000 is not contiguous Quero que este teste, ou seja, alguma função has_contiguous_one_bits(int), seja portátil. Uma maneira óbvia é fazer um …

11
É x + = a mais rápido do que x = x + a?
Eu estava lendo "The C ++ Programming Language" de Stroustrup, onde ele diz que de duas maneiras de adicionar algo a uma variável x = x + a; e x += a; Ele prefere +=porque provavelmente é melhor implementado. Acho que ele quer dizer que funciona mais rápido também. Mas …


4
muito tempo em C / C ++
Estou tentando este código no compilador C ++ do GNU e não consigo entender seu comportamento: #include <stdio.h>; int main() { int num1 = 1000000000; long num2 = 1000000000; long long num3; //num3 = 100000000000; long long num4 = ~0; printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3)); printf("%d %ld %lld %llu", …


11
É sempre OK * não * usar free () na memória alocada?
Estou estudando engenharia da computação e tenho alguns cursos de eletrônica. Ouvi, de dois de meus professores (destes cursos) que é possível evitar o uso da free()função (depois malloc(), calloc()etc.) porque os espaços de memória alocados provavelmente não será usado novamente para alocar outra memória. Ou seja, por exemplo, se …


4
Enum estranho no destruidor
Atualmente, estou lendo o código-fonte de Protocol Buffere encontrei um enumcódigo estranho definido aqui ~scoped_ptr() { enum { type_must_be_complete = sizeof(C) }; delete ptr_; } void reset(C* p = NULL) { if (p != ptr_) { enum { type_must_be_complete = sizeof(C) }; delete ptr_; ptr_ = p; } } Por …
83 c++  enums 

5
De onde vem a palavra “pragma”?
Portanto, sei o que é pragma e para que serve, mas qual é o significado da palavra em si? Já usei isso muitas vezes em código, mas nunca soube realmente o que a palavra realmente significa ou significa.
83 c++  c  terminology  pragma 

9
Mudança de C ++ para C
Depois de alguns anos codificando em C ++, recentemente me ofereceram um emprego de codificador em C, na área de embarcados. Deixando de lado a questão de saber se é certo ou errado descartar o C ++ no campo incorporado, há alguns recursos / expressões idiomáticas em C ++ dos …
83 c++  c 

1
como boost :: function e boost :: bind funcionam
Eu não gosto de ter caixas mágicas espalhadas por todo o meu código ... como exatamente essas duas classes funcionam para permitir que basicamente qualquer função seja mapeada para um objeto de função, mesmo se a função <> tiver um parâmetro completamente diferente definido para aquele que estou passando boost::bind …

2
Como o std :: is_function é implementado?
Como é a implementação a seguir std::is_function? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (da referência CPP ) Parece-me que uma intseria uma função sob esta definição. o que estou perdendo?
82 c++  templates  std  sfinae 



7
Posso usar NULL como substituição do valor 0?
Posso usar o NULLponteiro como substituto do valor de 0? Ou há algo de errado nisso? Como por exemplo: int i = NULL; como substituto para: int i = 0; Como experimento, compilei o seguinte código: #include <stdio.h> int main(void) { int i = NULL; printf("%d",i); return 0; } Resultado: …

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.