Pertanyaan yang diberi tag «c»

C adalah bahasa pemrograman tujuan umum yang digunakan untuk pemrograman sistem (OS dan tertanam), perpustakaan, game, dan lintas-platform. Tag ini harus digunakan dengan pertanyaan umum tentang bahasa C, sebagaimana didefinisikan dalam standar ISO 9899 (versi terbaru, 9899: 2018, kecuali ditentukan lain - juga tag permintaan versi khusus dengan c89, c99, c11, dll). C berbeda dari C ++ dan tidak boleh digabungkan dengan tag C ++ tanpa alasan yang rasional.

6
Apa cara yang benar untuk mengonversi 2 byte ke integer 16-bit yang sudah ditandatangani?
Dalam jawaban ini , zwol membuat klaim ini: Cara yang benar untuk mengkonversi dua byte data dari sumber eksternal menjadi integer bertanda 16-bit adalah dengan fungsi pembantu seperti ini: #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) val) …

1
Mengapa menulis terus menerus meninggalkan 4K byte di buffer?
Saya pada dasarnya memiliki kode berikut: 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; } Ini berfungsi jika ukurannya 1GB, tetapi ketika ukurannya ~ 2GB, ia mendapatkan 4K byte tersisa …
30 c  linux  system-calls 

4
Apa yang disebut (...) dalam C dan C ++?
Salah satu kegunaan dari ...adalah untuk menunjukkan entitas variadic di C dan C ++. Apa namanya? Apakah itu diklasifikasikan sebagai operator atau sesuatu yang lain ketika digunakan dengan cara itu? Ada detail lain tentang ...? Sunting: Saya tahu tujuan .... Saya bertanya tentang nama dan klasifikasinya, yang saya harap, serupa …

2
Mengapa tata bahasa BNF C memungkinkan deklarasi dengan deretan init-deklarator kosong?
Ketika melihat melalui tata bahasa BNF C, saya pikir itu aneh bahwa aturan produksi untuk deklarasi terlihat seperti ini (menurut https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of% 20C% 20di% 20Backus-Naur% 20form.htm ): <declaration> ::= {<declaration-specifier>}+ {<init-declarator>}* ; Mengapa menggunakan *quantifier (artinya nol atau lebih kejadian) untuk init-declarator? Ini memungkinkan pernyataan seperti int;atau void;menjadi valid secara sintaksis, …




1
Apa semantik objek yang tumpang tindih di C?
Pertimbangkan struct berikut: struct s { int a, b; }; Biasanya 1 , struct ini akan memiliki ukuran 8 dan alignment 4. Bagaimana jika kita membuat dua struct sobjek (lebih tepatnya, kita menulis ke dalam penyimpanan yang dialokasikan dua objek tersebut), dengan objek kedua tumpang tindih yang pertama? char *storage …

5
Operasi bitwise menghasilkan ukuran variabel yang tidak terduga
Konteks Kami mem-porting kode C yang awalnya dikompilasi menggunakan kompiler C 8-bit untuk mikrokontroler PIC. Ungkapan umum yang digunakan untuk mencegah variabel global yang tidak ditandatangani (misalnya, penghitung kesalahan) berguling kembali ke nol adalah sebagai berikut: if(~counter) counter++; Operator bitwise di sini membalikkan semua bit dan pernyataan ini hanya benar …

2
Tes dapat dibagi lebih cepat dari% operator?
Saya memperhatikan hal yang aneh di komputer saya. * Tes keterbagian tulisan tangan secara signifikan lebih cepat daripada %operator. Pertimbangkan contoh minimal: * 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; …

1
gcc-10.0.1 Segfault Khusus
Saya punya paket R dengan kode kompilasi C yang sudah relatif stabil untuk sementara waktu dan sering diuji terhadap berbagai platform dan kompiler (windows / osx / debian / fedora gcc / clang). Baru-baru ini platform baru ditambahkan untuk menguji paket lagi: Logs from checks with gcc trunk aka 10.0.1 …

4
Mengapa fungsi nilai absolut di C tidak menerima input const?
Di C, prototipe untuk fungsi nilai absolut (yang menerima float) adalah float fabsf( float ); Mengapa prototipe ini tidak menerima nilai konstan, seperti ini: float fabsf( float const ); fabsf tidak akan mengubah nilai input, kan? Jika saya memiliki fungsi yang menerima input dan memanggil fabsf, apakah saya terpaksa menghindari …

9
'\ 0' dan printf () di C
Dalam kursus pengantar C, saya telah belajar bahwa saat menyimpan string disimpan dengan karakter nol \0di akhir. Tetapi bagaimana jika saya ingin mencetak string, katakan printf("hello")meskipun saya telah menemukan bahwa itu tidak berakhir dengan \0mengikuti pernyataan printf("%d", printf("hello")); Output: 5 tetapi ini tampaknya tidak konsisten, sejauh yang saya tahu bahwa …
21 c  printf  stdout  c-strings 

2
Bagaimana makro lambda membuat lambda?
Saya menemukan kode ini di GitHub tetapi tidak begitu memahaminya: #define lambda(ret_type, _body) ({ ret_type _ _body _; }) Kemudian: int (*max)(int, int) = lambda(int, (int x, int y) { return x > y ? x : y; }); int max_value = max(1, 2); // max_value is 2 Apa yang …


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.