C

  • Encuentre el bit de mayor orden en C

    De Hackers Delight: int hibit(unsigned int n) { n |= (n >> 1); n |= (n >> 2); n |= (n >> 4); n |= (n >> 8); n |= (n >> 16); return n - (n >> 1); } Esta versión es para entradas de 32 bits, pero la lógica se puede ampliar para 64 bits

    LEER
  • C:¿Cuál es la diferencia entre ++i y i++?

    ++i incrementará el valor de i y luego devolver el valor incrementado. i = 1; j = ++i; (i is 2, j is 2) i++ incrementará el valor de i , pero devuelve el valor original que i retenido antes de ser incrementado. i = 1; j = i++; (i is 2, j is 1) Para un for bucle, cualquiera de los dos f

    LEER
  • ¿Hay alguna diferencia de rendimiento entre i++ y ++i en C?

    Resumen ejecutivo:No. i++ potencialmente podría ser más lento que ++i , ya que el antiguo valor de i es posible que deba guardarse para su uso posterior, pero en la práctica todos los compiladores modernos optimizarán esto. Podemos demostrar esto mirando el código de esta función, ambos con ++i y

    LEER
  • ¿Cuál es el mejor detector de fugas de memoria gratuito para un programa C/C++ y sus complementos DLL?

    Yo personalmente uso Visual Leak Detector, aunque puede causar grandes retrasos cuando se filtran bloques grandes (muestra el contenido de todo el bloque filtrado). Si no desea volver a compilar (como requiere Visual Leak Detector), recomendaría WinDbg, que es poderoso y rápido (aunque no es tan f

    LEER
  • Cómo desplazar una matriz de bytes en 12 bits

    ¡Hurra por los punteros! Este código funciona anticipando 12 bits por cada byte y copiando los bits adecuados hacia adelante. 12 bits es la mitad inferior (nybble) del siguiente byte y la mitad superior de 2 bytes de distancia. unsigned char length = 10; unsigned char data[10] = {0x0,0x0,0x0,0x0,0

    LEER
  • ¿Cuál es la forma más rápida de intercambiar valores en C?

    El número 2 a menudo se cita como la forma inteligente de hacerlo. De hecho, es muy probable que sea más lento, ya que oscurece el objetivo explícito del programador:intercambiar dos variables. Esto significa que un compilador no puede optimizarlo para usar las operaciones reales del ensamblador par

    LEER
  • ¿Cómo determino el tamaño de mi matriz en C?

    Resumen ejecutivo: int a[17]; size_t n = sizeof(a)/sizeof(a[0]); Respuesta completa: Para determinar el tamaño de su matriz en bytes, puede usar el sizeof operador: int a[17]; size_t n = sizeof(a); En mi computadora, los ints tienen una longitud de 4 bytes, por lo que n es 68. Para determina

    LEER
  • ¿Alguien tiene experiencia creando una biblioteca compartida en MATLAB?

    Una cosa para recordar es que el compilador de Matlab en realidad no compila el código de Matlab en instrucciones de máquina nativas. Simplemente lo envuelve en un ejecutable independiente o en una biblioteca con su propio motor de tiempo de ejecución que lo ejecuta. Podría ejecutar su código sin Ma

    LEER
  • ¿Cómo implementar continuaciones?

    Un buen resumen está disponible en Estrategias de implementación para continuaciones de primera clase, un artículo de Clinger, Hartheimer y Ost. Recomiendo mirar la implementación de Chez Scheme en particular. La copia de pila no es tan compleja y hay una serie de técnicas bien entendidas disponibl

    LEER
  • ¿Los operadores de desplazamiento (<<, >>) son aritméticos o lógicos en C?

    Cuando se desplaza a la izquierda, no hay diferencia entre desplazamiento aritmético y lógico. Al desplazar a la derecha, el tipo de desplazamiento depende del tipo de valor que se desplaza. (Como base para aquellos lectores que no estén familiarizados con la diferencia, un desplazamiento lógico a

    LEER
  • Implementación GTK de MessageBox

    Mmm, ok. Sugeriría un código como este, entonces: typedef struct { int type; int result; } DialogData; static gboolean display_dialog(gpointer user_data) { DialogData *dialog_data = user_data; GtkWidget *dialog; if (dialog_data->type & MB_YESNO) dialog =

    LEER
  • Biblioteca C/C++ para leer señales MIDI desde un dispositivo USB MIDI

    PortMidi es otra biblioteca de E/S MIDI multiplataforma de código abierto que vale la pena consultar. Por otro lado, si está trabajando en una aplicación de tipo sysex, Win32 directo funciona con bastante facilidad. Acabo de encontrar otro marco multiplataforma de código abierto que incluye soporte

    LEER
  • Escribe la composición bytebeat más bonita

    (Little endian de 16 bits firmado, mono de 8000 Hz (--format=S16_LE )) Música Mucho ¡mejor que antes! (aunque es bastante largo) main(t){for(;;t++)putchar(((7&(((t>>17)+1)>>2)+((t>>10)&1+2*(t>>18&1))*((23468643[7&t>>12]-48)+(3&t>>11))+((3&

    LEER
  • ¿Cuándo (x ==x+2)?

    Fortran IV: 2=0 Después de esto, cada constante 2 en el programa es cero. Confía en mí, he hecho esto (bueno, hace 25 años) Esto parece funcionar: #define x 2|0 Básicamente, la expresión se expande a (2|0 == 2|(0+2)) . Es un buen ejemplo de por qué se deben usar paréntesis al definir macros.

    LEER
  • imprimir 1 a 100 sin usar recursividad y condiciones

    C (90) (79) (59) (47) (42) (40) int estático x=1;a(){char b[8];printf(%d\n,x++);b[24]-=5*(1-x/101);}main(){a();return 0;} La función a que imprime los números no se llama a sí mismo! Aproveché un desbordamiento de búfer y cambié la dirección de retorno para que el contador del programa pasara p

    LEER
  • Copia de tabla Lua más pequeña

    235 Sustancialmente basado en las agallas de la respuesta 239 de SoniEx2. local o,k,F=type,next,{}for n=0,2 do F[n]=function(a,r,t,G)if n<1 or o{}~=o(a)then return a end t={}r=r or{}r[a]=n<2 and t G=F[n%2]for x,y in k,a do t[r[x]or G(x,r)]=r[y]or G(y,r)end return t end end table.copy={shallow

    LEER
  • Compara dos enteros en C o C++ sin operadores de comparación

    90 bytes Si podemos usar stdio , ¿por qué no usar sus capacidades de formato para realizar una comparación? main(a,b){scanf(%d%d,&a,&b);snprintf(&a,2,%d,b-a);a&=63;putchar(51-!(a-45)-!!(a-48));} Supone codificación compatible con ASCII y little-endian. 72 bytes Los cocientes se r

    LEER
  • Expandir una matriz C

    Vim, 54, 52, 49 47 pulsaciones 2wa0<esc>qqYp<c-a>6ldf @[email protected]$dT]dd:%norm dwf{xwC;<CR>gg0P Explicación: 2wa0<esc> Move 2 words forward, and insert a 0. qq Start recording in register Q Yp

    LEER
  • Golf mi pre-golf C

    Haskell, 327 360 418 394 bits g.(m.w.r.r=<<).lines.f n:c:z=\n#_0123456789++[A..Z]++[a..z] (!)x=elem x f(\\:\n:a)=f a f(a:b)=a:f b f a=a m(#:a)=c:a++[n] m a=a g(a:#:b)=a:[n|a/=n]++c:g b g(a:b)=a:g b g a=a s=span(! \t) r=reverse.snd.s l n(a:b)d|a==d,n=a:w(snd$s b)|1>0=a:l(not$n&&a==\\

    LEER
  • Decidir un literal entero de C

    Retina 0.8.2, 60 59 bits i`^(0[0-7]*|0x[\da-f]+|[1-9]\d*)(u)?(l)?(?-i:\3?)(?(2)|u?)$ ¡Pruébelo en línea! El enlace incluye casos de prueba. Editar:Guardado 1 byte gracias a @FryAmTheEggMan. Explicación: i` Haga coincidir mayúsculas y minúsculas. ^(0[0-7]*|0x[\da-f]+|[1-9]\d*) Comience con octa

    LEER
Total 7044 -Programación C  FirstPage PreviousPage NextPage LastPage CurrentPage:353/353  20-Programación C/Page Goto:1 347 348 349 350 351 352 353