«c» etiketlenmiş sorular

C, sistem programlama (OS ve gömülü), kütüphaneler, oyunlar ve çapraz platform için kullanılan genel amaçlı bir programlama dilidir. Bu etiket, ISO 9899 standardında tanımlandığı gibi C dili ile ilgili genel sorularla kullanılmalıdır (aksi belirtilmedikçe en son sürüm 9899: 2018 - c89, c99, c11 vb. İle sürüme özgü istekleri de etiketleyin). C, C ++ 'dan farklıdır ve rasyonel bir nedenden yoksun C ++ etiketi ile birleştirilmemelidir.

9
Asla çalıştırılmayacak kod, tanımsız davranışı çağırabilir mi?
Tanımlanmamış davranışı çağıran kod (bu örnekte, sıfıra bölme) asla çalıştırılmayacak, program hala tanımsız davranış mı? int main(void) { int i; if(0) { i = 1/0; } return 0; } Bunun hala tanımlanmamış bir davranış olduğunu düşünüyorum, ancak standartta beni destekleyecek veya reddedecek herhangi bir kanıt bulamıyorum. Eee, herhangi bir fikrin …

8
64 bit tam sayıdaki paketlenmiş 8 bit tam sayıları paralel olarak 1, donanım SIMD'siz SWAR çıkarma
Ben 8 elementli paketlenmiş 8 bitlik tamsayılar dizisi olarak yorumladığım 64 bitlik bir tamsayı varsa. Ben 1başka bir elemanın sonucunu etkileyen bir eleman sonucu olmadan taşma işlerken her paketli tamsayı sabit çıkarmak gerekir . Şu anda bu kodu var ve çalışıyor ama paralel olarak her paketlenmiş 8-bit tamsayı çıkarma yapar …
77 c++  c  bit-manipulation  simd  swar 

7
0 değerini ikame olarak NULL kullanabilir miyim?
NULLİşaretçiyi, değerinin yerine kullanmam için kullanabilir miyim 0? Yoksa bununla ilgili yanlış bir şey mi var? Mesela, örneğin: int i = NULL; yedek olarak: int i = 0; Deney olarak aşağıdaki kodu derledim: #include <stdio.h> int main(void) { int i = NULL; printf("%d",i); return 0; } Çıktı: 0 Nitekim bana …

10
Catalina 10.15'e yükselttikten sonra Mac'te C programı derlenemiyor
Önceki bir soru var Mojave'ye yükselttikten sonra bir Mac'te C programı derlenemiyor ve bunun cevapları neyin yanlış gittiğine dair çeşitliliklerin çoğunu kapsıyor. Şimdi - Pazartesi 2019-10-07 itibariyle - macOS Catalina 10.15'e yükseltebilirsiniz. Bir kez daha, yükseltme sırasında /usr/include(Mojave 10.14.6'dan) Catalina'ya yükseltilmeden önce XCode 11.0 yüklenmiş olsa bile , dizin güncelleme …
64 c  xcode  macos  gcc  macos-catalina 

4
Yapı dizisinin sonunda '{}' boş parantezlere ne gerek var?
Linux çekirdeğinde bazı c kodlarına çarptım: static struct ctl_table ip_ct_sysctl_table[] = { { .procname = "ip_conntrack_max", .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec, }, // ... { .procname = "ip_conntrack_log_invalid", .maxlen = sizeof(unsigned int), .mode = 0644, .proc_handler = proc_dointvec_minmax, .extra1 = &log_invalid_proto_min, .extra2 = &log_invalid_proto_max, }, { …

4
((Void (*) ()) buf) (); anlamına gelmek?
Ben picoCTF ikili bir sömürü meydan okuma çözüyorum ve bu kod parçası rastladı: ((void (*)())buf)(); bufbir karakter dizisi nerede . Zorluğu çözdüm ama tam olarak ne yaptığını anlayamıyorum. Bu konuya baktım ama başaramadım. Ne anlama ((void (*)())buf)();geliyor?

4
Const char * dizi başlatma virgülünün eksik olması durumunda derleyici uyarısı oluştur
Dize değişmez tabloları C kodumda çok kullanıyorum. Bu tabloların tümü aşağı yukarı şöyle görünür: static const char* const stateNames[STATE_AMOUNT] = { "Init state", "Run state", "Pause state", "Error state", }; Yukarıdaki kod ile ilgili sorun, tablo uzar ve geliştirme sırasında değiştirilir, zaman zaman virgül unutmak. Kod, eksik bir virgülle sorunsuz …
53 c  initialization 

6
(x | y) - y neden sadece x, hatta x olamaz? 0`
Bir çekirdek kodlarını okuyordu ve tek bir yerde içimde bir ifade gördüm ifaçıklamada gibi if (value == (SPINLOCK_SHARED | 1) - 1) { ............ } nerede SPINLOCK_SHARED = 0x80000000önceden tanımlanmış bir sabittir. Acaba neden (SPINLOCK_SHARED | 1) - 1dönüştürme ihtiyacımız var ? ifadenin sonucu 80000000 olur - 0x80000000 ile aynıdır, …


2
Argc ve argv 12 baytlarının adresleri neden birbirinden ayrılıyor?
Aşağıdaki programı bilgisayarımda çalıştırdım (Linux çalıştıran 64 bit Intel). #include <stdio.h> void test(int argc, char **argv) { printf("[test] Argc Pointer: %p\n", &argc); printf("[test] Argv Pointer: %p\n", &argv); } int main(int argc, char **argv) { printf("Argc Pointer: %p\n", &argc); printf("Argv Pointer: %p\n", &argv); printf("Size of &argc: %lu\n", sizeof (&argc)); printf("Size of …


6
Neden bu hak talebinde bulunulmayan tür cezalandırılan işaretçi uyarı derleyicisine özel?
Okuduğum çeşitli mesajları üzerinde yığın taşması RE: derefercing tip punned işaretçi hatası. Anladığım kadarıyla, hata aslında bir nesneye farklı tipte bir işaretçi (bir istisna yapılmış gibi gözükse de char*) üzerinden erişilme tehlikesinin anlaşılabilir ve makul bir uyarı olduğu uyarısıdır. Benim sorum aşağıdaki koda özgüdür: neden bir işaretçi adresi void**bu uyarı …
38 c  pointers  casting 


7
Bir yığın dizisinin işaretçisine göstericiye neden erişemiyorum?
Lütfen aşağıdaki koda bir göz atın. Bir diziyi char**işleve bir olarak geçirmeye çalışır : #include <stdio.h> #include <stdlib.h> static void printchar(char **x) { printf("Test: %c\n", (*x)[0]); } int main(int argc, char *argv[]) { char test[256]; char *test2 = malloc(256); test[0] = 'B'; test2[0] = 'A'; printchar(&test2); // works printchar((char **) …
35 c 

4
Strcasecmp algoritması hatalı mı?
strcasecmpC fonksiyonu yeniden uygulamaya çalışıyorum ve karşılaştırma sürecinde bir tutarsızlık gibi görünüyor fark ettim. itibaren man strcmp Strcmp () işlevi, iki s1 ve s2 dizesini karşılaştırır. Yerel ayar dikkate alınmaz (yerel ayarlara duyarlı bir karşılaştırma için bkz. Strcoll (3)). Eğer s1 sırasıyla, eşleşecek, eşleşecek veya s2'den büyük olacaksa, sıfırdan küçük, …
34 c  strcmp 

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.