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.

6
Jaki jest prawidłowy sposób konwersji 2 bajtów na 16-bitową liczbę całkowitą ze znakiem?
W tej odpowiedzi , Zwol wykonane tego twierdzenia: Prawidłowym sposobem konwersji dwóch bajtów danych ze źródła zewnętrznego na 16-bitową liczbę całkowitą ze znakiem jest użycie funkcji pomocniczych takich jak to: #include <stdint.h> int16_t be16_to_cpu_signed(const uint8_t data[static 2]) { uint32_t val = (((uint32_t)data[0]) << 8) | (((uint32_t)data[1]) << 0); return ((int32_t) …

1
Dlaczego zapis ciągle pozostawia bajty 4K w buforze?
Mam zasadniczo następujący kod: int fileWrite(int file, void * pBuffer, size_t size) { size_t bytesWritten = (size_t)write( file, pBuffer, size ) ; if (bytesWritten != size) { return -1; } return 0; } Działa, jeśli rozmiar wynosi 1 GB, ale gdy rozmiar wynosi ~ 2 GB, konsekwentnie pozostaje 4K bajtów. …
30 c  linux  system-calls 

4
Jak nazywają się (…) w C i C ++?
Jednym z zastosowań ...jest do określenia zmiennej liczbie argumentów podmiotów w C i C ++. Jak się nazywa? Czy jest sklasyfikowany jako operator lub coś innego, gdy jest używany w ten sposób? Wszelkie inne szczegóły dotyczące ...? Edycja: Znam cel .... Pytam o jego nazwę i klasyfikację, które, mam nadzieję, …

2
Dlaczego gramatyka BNF języka C dopuszcza deklaracje z pustą sekwencją deklaratorów init?
Przeglądając gramatykę BNF języka C, pomyślałem, że to dziwne, że reguła produkcyjna deklaracji wygląda tak (zgodnie z https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of% 20C% 20in% 20 Backus-Naur% 20form.htm ): <declaration> ::= {<declaration-specifier>}+ {<init-declarator>}* ; Po co używać *kwantyfikatora (co oznacza zero lub więcej wystąpień) dla init-declarator? Dzięki temu instrukcje takie jak int;lub void;mogą być poprawne …





5
Operacja bitowa powoduje nieoczekiwany rozmiar zmiennej
Kontekst Przenosimy kod C, który został pierwotnie skompilowany przy użyciu 8-bitowego kompilatora C dla mikrokontrolera PIC. Typowy idiom, który był używany, aby zapobiec cofaniu się globalnych zmiennych bez znaku (na przykład liczników błędów), jest następujący: if(~counter) counter++; Operator bitowy odwraca tutaj wszystkie bity, a instrukcja jest prawdziwa tylko wtedy, gdy …

2
Szybszy test podzielności niż operator%?
Zauważyłem ciekawą rzecz na moim komputerze. * Odręczny test podzielności jest znacznie szybszy niż %operator. Rozważ minimalny przykład: * AMD Ryzen Threadripper 2990WX, GCC 9.2.0 static int divisible_ui_p(unsigned int m, unsigned int a) { if (m <= a) { if (m == a) { return 1; } return 0; } …

1
gcc-10.0.1 Określony błąd segmentu
Mam pakiet R z kompilowanym kodem C, który był stosunkowo stabilny od dłuższego czasu i jest często testowany na wielu różnych platformach i kompilatorach (windows / osx / debian / fedora gcc / clang). Niedawno dodano nową platformę do ponownego przetestowania pakietu: Logs from checks with gcc trunk aka 10.0.1 …


9
„\ 0” i printf () w C
W kursie wprowadzającym do języka C nauczyłem się, że podczas przechowywania łańcuchy są przechowywane \0na końcu ze znakiem zerowym . Ale co, jeśli chciałbym wydrukować ciąg, powiedz, printf("hello")chociaż zauważyłem, że nie kończy się \0na poniższym stwierdzeniu printf("%d", printf("hello")); Output: 5 ale wydaje się to niespójne, o ile wiem, że zmienne, …
21 c  printf  stdout  c-strings 



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.