Domande taggate «c»

C è un linguaggio di programmazione generico utilizzato per la programmazione di sistemi (OS e embedded), librerie, giochi e multipiattaforma. Questo tag deve essere utilizzato con domande generali relative al linguaggio C, come definito nella norma ISO 9899 (l'ultima versione, 9899: 2018, se non diversamente specificato - anche tag richieste specifiche della versione con c89, c99, c11, ecc.). C è distinto da C ++ e non dovrebbe essere combinato con il tag C ++ in assenza di una ragione razionale.

2
Cosa rappresenta la costante 0,0039215689?
Continuo a vedere questo costante pop-up in vari file di intestazione grafica 0.0039215689 Sembra che abbia qualcosa a che fare con il colore forse? Ecco il primo successo su Google : void RDP_G_SETFOGCOLOR(void) { Gfx.FogColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f; Gfx.FogColor.G = _SHIFTR(w1, 16, 8) * 0.0039215689f; Gfx.FogColor.B = …

13
Come trovare 'sizeof' (un puntatore che punta a un array)?
Prima di tutto, ecco un po 'di codice: int main() { int days[] = {1,2,3,4,5}; int *ptr = days; printf("%u\n", sizeof(days)); printf("%u\n", sizeof(ptr)); return 0; } C'è un modo per scoprire la dimensione dell'array che ptrpunta (invece di limitarne la dimensione, che è di quattro byte su un sistema a …
309 c  arrays  pointers  sizeof 

11
Qual è la differenza tra NULL, '\ 0' e 0?
In C, sembrano esserci differenze tra i vari valori di zero - NULL, NULe 0. So che il carattere ASCII '0'valuta 48o 0x30. Il NULLpuntatore viene generalmente definito come: #define NULL 0 O #define NULL (void *)0 Inoltre, c'è anche il NULpersonaggio '\0'che sembra valutare 0. Ci sono momenti in …
309 c  pointers  null 

8
Perché rand () + rand () produce numeri negativi?
Ho osservato che la rand()funzione di libreria quando viene chiamata una sola volta all'interno di un ciclo, produce quasi sempre numeri positivi. for (i = 0; i < 100; i++) { printf("%d\n", rand()); } Ma quando aggiungo due rand()chiamate, i numeri generati ora hanno più numeri negativi. for (i = …
304 c  random 



5
Estrarre bit con una singola moltiplicazione
Ho visto una tecnica interessante utilizzata in una risposta a un'altra domanda e vorrei capirla un po 'meglio. Ci viene dato un numero intero a 64 bit senza segno e siamo interessati ai seguenti bit: 1.......2.......3.......4.......5.......6.......7.......8....... In particolare, vorremmo spostarli nelle prime otto posizioni, in questo modo: 12345678........................................................ Non ci …

14
MIN e MAX in C
Dove sono MINe MAXdefiniti in C, se non del tutto? Qual è il modo migliore per implementarli, nel modo più generico e digitando nel modo più sicuro possibile? (Preferibilmente estensioni / builtin del compilatore per i compilatori mainstream.)
301 c  max  min  c-preprocessor 

3
Perché NaN - NaN == 0.0 con il compilatore Intel C ++?
È noto che i NaN si propagano in aritmetica, ma non sono riuscito a trovare alcuna dimostrazione, quindi ho scritto un piccolo test: #include <limits> #include <cstdio> int main(int argc, char* argv[]) { float qNaN = std::numeric_limits<float>::quiet_NaN(); float neg = -qNaN; float sub1 = 6.0f - qNaN; float sub2 = …
300 c++  c  floating-point  ieee-754  icc 


4
Dimensione del carattere ('a') in C / C ++
Qual è la dimensione del carattere in C e C ++? Per quanto ne so, la dimensione del carattere è di 1 byte in C e C ++. In C: #include <stdio.h> int main() { printf("Size of char : %d\n", sizeof(char)); return 0; } In C ++: #include <iostream> int …
298 c++  c  types 

9
Puntatori in C: quando usare la e commerciale e l'asterisco?
Ho appena iniziato con i puntatori e sono leggermente confuso. So che &indica l'indirizzo di una variabile e che *può essere utilizzato davanti a una variabile puntatore per ottenere il valore dell'oggetto a cui punta il puntatore. Ma le cose funzionano diversamente quando lavori con array, stringhe o quando chiami …
298 c  pointers 

6
Come stampare un tipo int64_t in C
Lo standard C99 ha tipi interi con dimensione byte come int64_t. Sto usando il seguente codice: #include <stdio.h> #include <stdint.h> int64_t my_int = 999999999999999999; printf("This is my_int: %I64d\n", my_int); e ricevo questo avviso del compilatore: warning: format ‘%I64d’ expects type ‘int’, but argument 2 has type ‘int64_t’ Ho provato con: …
298 c  stdint 

26
Misura facilmente il tempo trascorso
Sto cercando di usare time () per misurare vari punti del mio programma. Quello che non capisco è perché i valori nel prima e nel dopo sono gli stessi? Capisco che questo non è il modo migliore per profilare il mio programma, voglio solo vedere quanto tempo impiega qualcosa. printf("**MyProgram::before …
297 c++  c  linux  time  measurement 

3
Cos'è l'operatore >>> = in C?
Dato da un collega come un enigma, non riesco a capire come questo programma C compili e funzioni. Cos'è questo >>>=operatore e lo strano 1P1letterale? Ho provato a Clang e GCC. Non ci sono avvisi e l'output è "???" #include <stdio.h> int main() { int a[2]={ 10, 1 }; while( …

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.