C

  • Trova il bit di ordine più alto in C

    Da 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); } Questa versione è per int a 32 bit, ma la logica può essere estesa a 64 bit o superiore

    LEGGERE
  • C:Qual è la differenza tra ++i e i++?

    ++i incrementerà il valore di i , quindi restituire il valore incrementato. i = 1; j = ++i; (i is 2, j is 2) i++ incrementerà il valore di i , ma restituisce il valore originale che i tenuto prima di essere incrementato. i = 1; j = i++; (i is 2, j is 1) Per un for loop, entrambi funzio

    LEGGERE
  • C'è una differenza di prestazioni tra i++ e ++i in C?

    Riepilogo esecutivo:No. i++ potrebbe essere potenzialmente più lento di ++i , dal vecchio valore di i potrebbe essere necessario salvarlo per un uso successivo, ma in pratica tutti i compilatori moderni lo ottimizzeranno via. Possiamo dimostrarlo guardando il codice per questa funzione, entrambi c

    LEGGERE
  • Qual è il miglior rilevatore di perdite di memoria gratuito per un programma C/C++ e le sue DLL plug-in?

    Personalmente utilizzo Visual Leak Detector, anche se può causare grandi ritardi quando vengono trapelati blocchi di grandi dimensioni (mostra il contenuto dellintero blocco trapelato). Se non vuoi ricompilare (come richiede Visual Leak Detector) ti consiglio WinDbg, che è potente e veloce (anche

    LEGGERE
  • Come spostare una matrice di byte di 12 bit

    Viva le indicazioni! Questo codice funziona guardando avanti 12 bit per ogni byte e copiando i bit corretti in avanti. 12 bit è la metà inferiore (nybble) del byte successivo e la metà superiore di 2 byte di distanza. unsigned char length = 10; unsigned char data[10] = {0x0,0x0,0x0,0x0,0x0,0x0,0x0

    LEGGERE
  • Qual è il modo più veloce per scambiare valori in C?

    Il numero 2 è spesso citato come il modo intelligente di farlo. In effetti è molto probabilmente più lento in quanto oscura lobiettivo esplicito del programmatore:scambiare due variabili. Ciò significa che un compilatore non può ottimizzarlo per utilizzare le effettive operazioni dellassemblatore pe

    LEGGERE
  • Come posso determinare la dimensione del mio array in C?

    Riepilogo esecutivo: int a[17]; size_t n = sizeof(a)/sizeof(a[0]); Risposta completa: Per determinare la dimensione del tuo array in byte, puoi usare il sizeof operatore: int a[17]; size_t n = sizeof(a); Sul mio computer, gli int sono lunghi 4 byte, quindi n è 68. Per determinare il numero d

    LEGGERE
  • Qualcuno ha esperienza nella creazione di una libreria condivisa in MATLAB?

    Una cosa da ricordare è che il compilatore Matlab in realtà non compila il codice Matlab nelle istruzioni della macchina nativa. Lo avvolge semplicemente in un eseguibile autonomo o in una libreria con il proprio motore di runtime che lo esegue. Saresti in grado di eseguire il tuo codice senza Matla

    LEGGERE
  • Come implementare le continuazioni?

    Un buon riassunto è disponibile in Implementation Strategies for First-Class Continuations, un articolo di Clinger, Hartheimer e Ost. Consiglio di esaminare in particolare limplementazione di Chez Scheme. La copia dello stack non è così complessa e sono disponibili numerose tecniche ben note per mi

    LEGGERE
  • Gli operatori di spostamento (<<, >>) sono aritmetici o logici in C?

    Quando si sposta a sinistra, non cè differenza tra spostamento aritmetico e logico. Quando si sposta a destra, il tipo di spostamento dipende dal tipo di valore che viene spostato. (Come sfondo per quei lettori che non hanno familiarità con la differenza, uno spostamento logico a destra di 1 bit sp

    LEGGERE
  • Implementazione GTK di MessageBox

    Hmm va bene. Suggerirei un codice come questo, quindi: 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) dial

    LEGGERE
  • Libreria C/C++ per la lettura di segnali MIDI da un dispositivo MIDI USB

    PortMidi è unaltra libreria I/O MIDI multipiattaforma open source che vale la pena provare. Daltra parte, se stai lavorando su un tipo di app sysex, Win32 diretto funziona abbastanza facilmente. Mi sono appena imbattuto in un altro framework multipiattaforma open source che include il supporto MIDI

    LEGGERE
  • Scrivi la più bella composizione bytebeat

    (Little endian a 16 bit firmato, mono a 8000 Hz (--format=S16_LE )) Musica Molto meglio di prima! (anche se è piuttosto lungo) 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&t

    LEGGERE
  • Quando fa (x ==x+2)?

    Fortran IV: 2=0 Dopo questo ogni costante 2 nel programma è zero. Credimi, lho fatto (ok, 25 anni fa) Questo sembra funzionare: #define x 2|0 Fondamentalmente, lespressione viene espansa a (2|0 == 2|(0+2)) . È un buon esempio del motivo per cui si dovrebbero usare le parentesi quando si defini

    LEGGERE
  • stampa da 1 a 100 senza usare la ricorsione e le condizioni

    C (90) (79) (59) (47) (42) (40) int statico x=1;a(){char b[8];printf(%d\n,x++);b[24]-=5*(1-x/101);}main(){a();return 0;} La funzione a che stampa i numeri non si chiama! Ho sfruttato un buffer overflow e ho cambiato lindirizzo di ritorno per fare in modo che il contatore del programma andasse o

    LEGGERE
  • La più piccola copia del tavolo Lua

    235 Sostanzialmente basato sul coraggio della risposta 239 di 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=F[

    LEGGERE
  • Confronta due interi in C o C++ senza operatori di confronto

    90 byte Se possiamo usare stdio , perché non utilizzare le sue capacità di formattazione per eseguire il confronto? main(a,b){scanf(%d%d,&a,&b);snprintf(&a,2,%d,b-a);a&=63;putchar(51-!(a-45)-!!(a-48));} Presuppone una codifica compatibile con ASCII e little-endian. 72 byte I quoz

    LEGGERE
  • Espandi una matrice C

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

    LEGGERE
  • Golf il mio pre-golf C

    Haskell, 327 360 418 394 byte 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==\\

    LEGGERE
  • Decidi un intero C letterale

    Retina 0.8.2, 60 59 byte i`^(0[0-7]*|0x[\da-f]+|[1-9]\d*)(u)?(l)?(?-i:\3?)(?(2)|u?)$ Provalo online! Il collegamento include casi di test. Modifica:salvato 1 byte grazie a @FryAmTheEggMan. Spiegazione: i` Abbina senza distinzione tra maiuscole e minuscole. ^(0[0-7]*|0x[\da-f]+|[1-9]\d*) Inizia

    LEGGERE
Total 7044 -Programmazione C  FirstPage PreviousPage NextPage LastPage CurrentPage:353/353  20-Programmazione C/Page Goto:1 347 348 349 350 351 352 353