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.


1
Konversi untuk membatalkan ** pada kompiler yang berbeda
Saya telah menjalankan kode berikut melalui berbagai kompiler: int main() { float **a; void **b; b = a; } Dari apa yang saya sudah mampu mengumpulkan, void **adalah tidak pointer generik yang berarti bahwa setiap konversi dari pointer lain tidak harus mengkompilasi atau setidaknya melempar peringatan. Namun, inilah hasil saya …
9 c++  c  cuda 


1
Bisakah pointer ke tipe tidak lengkap tidak lengkap?
Bisakah int (*)[]tipe yang tidak lengkap? C 2018 6.2.5 1 mengatakan: Pada berbagai titik dalam unit terjemahan, suatu jenis objek mungkin tidak lengkap (kurang informasi yang cukup untuk menentukan ukuran objek jenis itu) atau lengkap (memiliki informasi yang cukup). Jadi tampaknya jika ukuran suatu jenis diketahui, jenisnya lengkap. 6.2.6.1 28 …

3
Mengapa LLVM mengalokasikan variabel redundan?
Berikut adalah file C sederhana dengan definisi enum dan mainfungsi: enum days {MON, TUE, WED, THU}; int main() { enum days d; d = WED; return 0; } Ini mentranspile ke LLVM IR berikut: define dso_local i32 @main() #0 { %1 = alloca i32, align 4 %2 = alloca i32, …
9 c  llvm  llvm-codegen 

1
CHAR_WIDTH tidak dideklarasikan
Saya mendapatkan kesalahan ‘CHAR_WIDTH’ undeclared saat mencoba mengompilasi program sederhana ini: #include <stdio.h> #include <limits.h> int main() { printf("CHAR_BIT = %d\n", CHAR_BIT); printf("CHAR_WIDTH = %d\n", CHAR_WIDTH); return (0); } dengan gcc ./show_char_width.c -o show_char_width dan gcc: GNU C17 (Ubuntu 8.3.0-6ubuntu1) versi 8.3.0 (x86_64-linux-gnu) dikompilasi oleh GNU C versi 8.3.0, versi …
9 c  gcc 


2
Apa itu kompilasi waktu kompilasi dalam C?
Ketika saya meneliti keunggulan C lebih dari C ++, saya menemukan paragraf ini: Cara standar dalam C untuk melakukan enkapsulasi adalah dengan meneruskan mendeklarasikan struct dan hanya mengizinkan akses ke datanya melalui fungsi. Metode ini juga membuat enkapsulasi waktu kompilasi. Kompilasi waktu enkapsulasi memungkinkan kami untuk mengubah struktur data anggota …
9 c 

1
Mengapa program saya terus macet saat menjalankan program *** mandelbrot brainf?
Saya ingin meningkatkan keterampilan C saya, jadi saya mencari beberapa ide program. Seseorang mengusulkan untuk membuat penerjemah Brainf *** sederhana dan kemudian kompiler. Jadi inilah saya. Saya membuat penerjemah dan berfungsi seperti yang diharapkan, kecuali dengan program Mandelbrot: A mandelbrot set fractal viewer in brainfuck written by Erik Bosman +++++++++++++[->++>>>+++++>++>+<<<<<<]>>>>>++++++>--->>>>>>>>>>+++++++++++++++[[ …

6
C pointer ke deklarasi array dengan bitwise dan operator
Saya ingin memahami kode berikut: //... #define _C 0x20 extern const char *_ctype_; //... __only_inline int iscntrl(int _c) { return (_c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)_c] & _C)); } Itu berasal dari file ctype.h dari kode sumber sistem operasi obenbsd. Fungsi ini memeriksa apakah char adalah …
9 c  openbsd 

3
foo (batal) vs foo (batal *)
Secara fungsional dan sintaksis, apakah ada perbedaan antara fungsi yang prototipe-nya int foo(void)dan int foo(void *)? Saya tahu perbedaan antara, misalnya, int bar(int)dan int bar(int *)- salah satunya mencari int, dan yang lainnya mencari pointer int. Apakah voidberperilaku dengan cara yang sama?

3
+ (+ k--) ekspresi dalam C
Saya melihat pertanyaan ini dalam sebuah tes di mana kita harus memberi tahu keluaran kode berikut. #include<stdio.h> int main(){ int k = 0; while(+(+k--)!=0) k=k++; printf("%d\n", k); return 0; } Outputnya adalah -1. Saya tidak yakin mengapa ini jawabannya. Apa arti ungkapan +(+k--)dalam C?
9 c 

4
Bagaimana cara sizeof bekerja dengan dereferensi ini dari pointer ke array?
Di sini saya memiliki pointer ptrke array arr4 bilangan bulat. ptrmenunjuk ke seluruh array. ptr[0]atau *ptrmenunjuk ke elemen pertama array, jadi menambahkan 1 untuk ptr[0]memberikan alamat elemen kedua array. Saya tidak mengerti mengapa menggunakan sizeof(ptr[0])memberikan ukuran seluruh array, 16 byte, bukan hanya ukuran elemen pertama, 4 byte, (sebagai ptr[0]poin ke …
9 c  arrays  pointers 



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.