Pytania otagowane jako c

C jest językiem programowania ogólnego przeznaczenia używanym do programowania systemu (system operacyjny i wbudowane), bibliotek, gier i platform. Tego znacznika należy używać z ogólnymi pytaniami dotyczącymi języka C, zgodnie z definicją w normie ISO 9899 (najnowsza wersja, 9899: 2018, o ile nie określono inaczej - także znaczniki specyficzne dla wersji za pomocą c89, c99, c11 itd.). C różni się od C ++ i nie należy go łączyć ze znacznikiem C ++ bez uzasadnionego powodu.

2
Co oznacza stała 0,0039215689?
Ciągle widzę tę stałą wyskakującą w różnych plikach nagłówka grafiki 0.0039215689 Może to ma coś wspólnego z kolorem? Oto pierwsze trafienie w 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 = _SHIFTR(w1, 8, 8) * 0.0039215689f; Gfx.FogColor.A = …


11
Jaka jest różnica między NULL, „\ 0” i 0?
W C, pojawiają się różnice pomiędzy różnymi wartościami Zero - NULL, NULi 0. Wiem, że znak ASCII '0'ocenia na 48lub 0x30. NULLWskaźnik jest zazwyczaj definiowane jako: #define NULL 0 Lub #define NULL (void *)0 Ponadto istnieje NULpostać, '\0'która wydaje się również oceniać 0. Czy zdarza się, że te trzy wartości …
309 c  pointers  null 

8
Dlaczego rand () + rand () generuje liczby ujemne?
Zauważyłem, że rand()funkcja biblioteki, gdy jest wywoływana tylko raz w pętli, prawie zawsze generuje liczby dodatnie. for (i = 0; i < 100; i++) { printf("%d\n", rand()); } Ale kiedy dodam dwa rand()połączenia, wygenerowane liczby mają teraz więcej liczb ujemnych. for (i = 0; i < 100; i++) { printf("%d …
304 c  random 



5
Wyodrębnianie bitów za pomocą jednego mnożenia
Widziałem ciekawą technikę zastosowaną w odpowiedzi na inne pytanie i chciałbym ją trochę lepiej zrozumieć. Otrzymujemy 64-bitową liczbę całkowitą bez znaku i jesteśmy zainteresowani następującymi bitami: 1.......2.......3.......4.......5.......6.......7.......8....... W szczególności chcielibyśmy przenieść je na najwyższe osiem pozycji, w ten sposób: 12345678........................................................ Nie obchodzi nas wartość bitów wskazanych przez .i nie trzeba …

3
Dlaczego NaN - NaN == 0.0 z kompilatorem Intel C ++?
Powszechnie wiadomo, że NaN rozmnażają się w arytmetyce, ale nie mogłem znaleźć żadnych demonstracji, więc napisałem mały 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 = qNaN - 6.0f; float sub3 …
300 c++  c  floating-point  ieee-754  icc 


14
MIN i MAX w C
Gdzie są MINi MAXzdefiniowane w C, jeśli w ogóle? Jaki jest najlepszy sposób na ich wdrożenie, tak ogólnie i bezpiecznie, jak to możliwe? (Preferowane są rozszerzenia / wbudowane kompilatory kompilatorów głównego nurtu).
299 c  max  min  c-preprocessor 

4
Rozmiar znaku („a”) w C / C ++
Jaka jest wielkość znaków w C i C ++? O ile mi wiadomo rozmiar char wynosi 1 bajt zarówno w C, jak i C ++. W C: #include <stdio.h> int main() { printf("Size of char : %d\n", sizeof(char)); return 0; } W C ++: #include <iostream> int main() { std::cout …
298 c++  c  types 

9
Wskaźniki w C: kiedy używać znaku handlowego i gwiazdki?
Zaczynam od wskazówek i jestem trochę zdezorientowany. Wiem &oznacza adres zmiennej, który *może być użyty przed zmienną wskaźnika, aby uzyskać wartość obiektu wskazywanego przez wskaźnik. Ale wszystko działa inaczej, gdy pracujesz z tablicami, łańcuchami lub gdy wywołujesz funkcje z kopią wskaźnika zmiennej. Trudno w tym wszystkim dostrzec logikę. Kiedy powinienem …
298 c  pointers 

6
Jak wydrukować typ int64_t w C
Standard C99 ma typy liczb całkowitych o rozmiarze bajtów jak int64_t. Korzystam z następującego kodu: #include <stdio.h> #include <stdint.h> int64_t my_int = 999999999999999999; printf("This is my_int: %I64d\n", my_int); i dostaję to ostrzeżenie kompilatora: warning: format ‘%I64d’ expects type ‘int’, but argument 2 has type ‘int64_t’ Próbowałem z: printf("This is my_int: …
298 c  stdint 

26
Łatwo mierz upływ czasu
Próbuję użyć time () do pomiaru różnych punktów mojego programu. Nie rozumiem, dlaczego wartości przed i po są takie same? Rozumiem, że to nie jest najlepszy sposób na profilowanie mojego programu, chcę tylko zobaczyć, jak długo coś potrwa. printf("**MyProgram::before time= %ld\n", time(NULL)); doSomthing(); doSomthingLong(); printf("**MyProgram::after time= %ld\n", time(NULL)); Próbowałem: struct …
297 c++  c  linux  time  measurement 

3
Co to jest operator >>> = w C?
Biorąc pod uwagę kolegę jako zagadkę, nie mogę zrozumieć, jak ten program C faktycznie się kompiluje i działa. Co to jest ten >>>=operator i dziwny 1P1literał? Testowałem w Clang i GCC. Nie ma ostrzeżeń, a wynikiem jest „???” #include <stdio.h> int main() { int a[2]={ 10, 1 }; while( a[ …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.