คำถามติดแท็ก c

C เป็นภาษาโปรแกรมคอมพิวเตอร์ทั่วไปที่ใช้สำหรับระบบปฏิบัติการเกมและงานที่มีประสิทธิภาพสูงอื่น ๆ

4
ทำไมสั้น, int และคิดค้นมานานใน C?
ฉันมีปัญหาในการทำความเข้าใจสิ่งที่เป็นวัตถุประสงค์ที่แน่นอนของการสร้างshort, intและlongชนิดข้อมูลใน C? เหตุผลที่ผมถามคือมันไม่ได้ดูเหมือนขนาดของพวกเขาจะกระโดด - พวกเขาอาจจะมีขนาดใดตราบใดที่shortมีขนาดเล็กกว่าintเช่น ในสถานการณ์ใดที่คุณควรใช้unsigned intหรือunsigned longตัวอย่างเช่น a แทนsize_tเมื่อคุณทำเช่นนั้นจะไม่มีความหวังของความเข้ากันได้ของไบนารี? (หากคุณไม่ทราบขนาดคุณจะรู้ได้อย่างไรว่าจะเลือกขนาดไหน)
16 c  data-types 

4
เพิ่มระดับของรหัส C / C ++ ของฉัน
ฉันเขียนโปรแกรมมา 3-4 ปีแล้วและรู้สึกว่าฉันไม่สามารถเรียกได้ว่าเป็นผู้เริ่มต้นอีกต่อไป แต่ฉันอ่านคำถามในเว็บไซต์นี้และคิดว่าพวกเขากำลังพูดถึง WTF หรือไม่ ฉันรู้สึกแบบเดียวกันเมื่อฉันหยิบหนังสือเขียนโปรแกรมขึ้นทุกวัน ฉันได้อ่านหนังสือเขียนโปรแกรมเริ่มต้นหลายเล่มบางเล่มใน C / C ++ และอื่น ๆ เกี่ยวกับเกม ฉันได้เขียนสิ่งที่ซับซ้อนมากขึ้นเช่นพื้นฐาน AI, อนุกรมและอินเตอร์เฟส TCP / IP ฉันวางแผนที่จะเป็นโปรแกรมเมอร์เกม แต่เมื่อไม่นานมานี้ฉันมีความสนใจในระบบสมองกลฝังตัวหลังจากมีโอกาสได้ทำงานกับพวกเขา (อินเตอร์เฟสแบบอนุกรม) ฉันพบว่ามันยากมากที่จะหาสื่อเพื่อการเรียนรู้ของฉันต่อหลังจากเสร็จสิ้นการแนะนำและหนังสือเริ่มต้นเนื่องจากไม่มีหนังสือ C ++ ระดับกลางที่ฉันสามารถหาได้ คุณจะให้คำแนะนำอะไรเพื่อพัฒนาและยกระดับความรู้และทักษะของฉัน ทรัพยากรที่เฉพาะเจาะจงจะได้รับการชื่นชมอย่างมาก
16 c++  c 

7
มีวิธีแนะนำในการสื่อสารการเขียนโปรแกรมทางวิทยาศาสตร์ / วิศวกรรมให้กับนักพัฒนา C หรือไม่?
ฉันมีรหัส MATLAB จำนวนมากที่ต้องได้รับการย้ายไปยัง C (ความเร็วในการเรียกใช้มีความสำคัญสำหรับงานนี้) ซึ่งเป็นส่วนหนึ่งของกระบวนการแบ็คเอนด์สำหรับเว็บแอปพลิเคชัน เมื่อฉันพยายามที่จะ outsource รหัสนี้ให้กับนักพัฒนา C ฉันถือว่า (แก้ไขฉันถ้าฉันผิด) นักพัฒนา C บางคนก็เข้าใจรหัส MATLAB (สิ่งต่าง ๆ เช่นการจัดทำดัชนีและการจัดการหน่วยความจำแตกต่างกัน ฯลฯ ) ฉันสงสัยว่ามีนักพัฒนา C คนใดบ้างที่สามารถแนะนำขั้นตอนให้ฉันทำตามเพื่อสื่อสารสิ่งที่ดีที่สุดรหัสได้หรือไม่ ตัวอย่างเช่นฉันควรจะให้รหัส MATLAB และอธิบายสิ่งที่มันทำทีละบรรทัด? หรือฉันควรจะให้คณิตศาสตร์ / อัลกอริธึมอธิบายมันเป็นภาษาอังกฤษธรรมดาและให้ผู้พัฒนา C ใช้มันด้วยความเข้าใจนี้ในแบบของเขา / เธอ (เช่นฉันสามารถสมมติว่าผู้พัฒนาเข้าใจวิธีการทำงานกับคณิตศาสตร์ที่ซับซ้อน (เช่นจินตภาพ ตัวเลข) วิธีสร้างฮิสโตแกรมทำการ FFT และอื่น ๆ )? หรือมีวิธีที่ดีกว่า ฉันคาดหวังว่าฉันไม่ใช่คนแรกที่ต้องทำสิ่งนี้ดังนั้นฉันจึงสงสัยว่านักพัฒนา C รายใดที่ประสบปัญหานี้และสามารถแบ่งปันภูมิปัญญาดั้งเดิมว่าพวกเขาต้องการให้ถ่ายโอนงานนี้ได้อย่างไร ขอบคุณล่วงหน้าสำหรับความคิดเห็นใด ๆ
16 c  matlab 

3
เหตุผลในการวางประเภทฟังก์ชั่นและชื่อวิธีการในบรรทัดที่แตกต่างกันในค
ฉันเพิ่งเริ่มต้นที่ บริษัท และหนึ่งในความคิดเห็นสไตล์ในการตรวจสอบรหัสแรกของฉันคือว่าประเภทการส่งคืนและชื่อวิธีการควรอยู่ในบรรทัดที่แตกต่างกัน ตัวอย่างเช่นสิ่งนี้ void foo() { } ควรเป็นแบบนี้ void foo() { } ฉันเคยใช้สไตล์แรกเสมอและฉันสงสัยว่ามีเหตุผลอื่นนอกเหนือจากความชอบส่วนตัวทำไมผู้คนถึงใช้สไตล์ที่สอง? ฉันไม่คิดว่าคนแรกจะเจ็บการอ่านเลย เป็นเรื่องธรรมดามากกว่าอย่างอื่นกับโปรแกรมเมอร์ C และโครงการโอเพ่นซอร์สขนาดใหญ่หรือไม่?
16 c  coding-style 

4
ทำไมโปรแกรมเมอร์บางคนจัดหมวดหมู่ C, Python, C ++ แตกต่างกันอย่างไร - เกี่ยวกับระดับ
ฉันกำลังเรียนหลักสูตรเบื้องต้นเกี่ยวกับหลามและผู้สอนบอกว่าหลามเป็นภาษาระดับสูงและ C และ C ++ เป็นภาษาระดับต่ำ มันแค่ทำให้สับสน ฉันคิดว่า C, C ++, Python, Java และอื่น ๆ เป็นภาษาระดับสูงทั้งหมด ฉันอ่านคำถามที่ stackoverflow ใน C, C ++ และอื่น ๆ พวกเขาดูเหมือนจะอ้างถึงภาษาเหล่านั้นในระดับสูง ฉันคิดว่าโปรแกรมเมอร์บางคนใช้คำเหล่านั้นสลับกันได้

6
การจัดเรียงหน่วยความจำมีความสำคัญแค่ไหน? มันยังคงเป็นเรื่องสำคัญหรือไม่
จากช่วงเวลานี้ฉันได้ค้นหาและอ่านมากเกี่ยวกับการจัดตำแหน่งหน่วยความจำวิธีการทำงานและวิธีการใช้งาน บทความที่เกี่ยวข้องมากที่สุดที่ฉันได้พบในขณะนี้คือคนนี้ แต่ถึงอย่างนั้นฉันก็ยังมีคำถามบางอย่างเกี่ยวกับเรื่องนี้: ออกจากระบบฝังตัวเรามักจะมีหน่วยความจำขนาดใหญ่ในคอมพิวเตอร์ของเราที่ทำให้การจัดการหน่วยความจำน้อยลงมากฉันทำการปรับให้เหมาะสม แต่ตอนนี้มันเป็นสิ่งที่สามารถสร้างความแตกต่างได้ถ้าเราเปรียบเทียบโปรแกรมเดียวกันกับหรือ ไม่มีหน่วยความจำที่จัดเรียงใหม่และจัดตำแหน่ง? การจัดตำแหน่งหน่วยความจำมีข้อดีอื่น ๆ หรือไม่? ฉันอ่านบางแห่งว่า CPU ทำงานได้ดีขึ้น / เร็วขึ้นด้วยหน่วยความจำที่จัดเรียงเพราะใช้คำสั่งในการประมวลผลน้อยกว่า (หากคุณมีลิงค์สำหรับบทความ / เกณฑ์มาตรฐานเกี่ยวกับเรื่องนี้?) ในกรณีนี้ มีข้อดีมากกว่าสองอย่างนี้ไหม? ในลิงค์บทความที่บทที่ 5 ผู้เขียนพูดว่า: ระวัง: ใน C ++ คลาสที่ดูเหมือนว่า structs อาจผิดกฎนี้! (ไม่ว่าพวกเขาจะทำหรือไม่ขึ้นอยู่กับว่าคลาสพื้นฐานและฟังก์ชั่นสมาชิกเสมือนมีการใช้งานอย่างไรและแตกต่างกันตามคอมไพเลอร์) บทความส่วนใหญ่พูดคุยเกี่ยวกับโครงสร้าง แต่การประกาศตัวแปรท้องถิ่นได้รับผลกระทบจากความต้องการนี้เช่นกัน? คุณเคยคิดบ้างไหมว่าการจัดเรียงหน่วยความจำทำงานอย่างไรใน C ++ เนื่องจากดูเหมือนว่าจะมีความแตกต่างบ้างไหม? คำถามเดิมนี้มีคำว่า "การจัดตำแหน่ง" แต่ไม่ได้ให้คำตอบสำหรับคำถามข้างต้น

1
เหตุใดจึงเลือก sizeof (องค์ประกอบ) มากกว่า sizeof (TYPE) สำหรับการคำนวณจำนวนองค์ประกอบในอาร์เรย์
ฉันกำลังอ่าน "การโปรแกรม C ของ King KN" และพบข้อความต่อไปนี้: เราพูดถึงการใช้นิพจน์sizeof(a)/sizeof(a[0])เพื่อคำนวณจำนวนองค์ประกอบในอาร์เรย์ การแสดงออกsizeof(a)/sizeof(t)ที่ t คือประเภทขององค์ประกอบก็จะทำงานได้เช่นกัน แต่ก็ถือว่าเป็นเทคนิคที่ด้อยกว่า ทำไมจึงถือว่าเป็นเทคนิคที่ด้อยกว่า
15 c  array 

2
Java มี JVM, C คืออะไร?
ฉันรู้ว่า C มีคอมไพเลอร์ แต่สิ่งที่กำหนดประสิทธิภาพการดำเนินการ? ตัวอย่างเช่นในบล็อก if else จะเกิดอะไรขึ้นหากโค้ดเพิ่งมี ifs ทั้งหมดแทน ifes elses จะเป็นตัวกำหนดว่า ifs ทั้งหมดจะถูกรันอย่างไร ใน Java มันจะเป็น JVM แต่ใน C สิ่งที่คอมไพเลอร์ประมวลผลคืออะไร?
15 java  c 

5
เหตุใดจึงมี * การประกาศ * ของข้อมูลและฟังก์ชั่นที่จำเป็นในภาษา C เมื่อคำจำกัดความถูกเขียนในตอนท้ายของซอร์สโค้ด?
พิจารณารหัส "C" ต่อไปนี้: #include<stdio.h> main() { printf("func:%d",Func_i()); } Func_i() { int i=3; return i; } Func_i()ถูกกำหนดในตอนท้ายของซอร์สโค้ดและไม่มีการประกาศให้ก่อนที่จะใช้main()มัน ในเวลามากเมื่อคอมไพเลอร์เห็นFunc_i()ในmain()มันออกมาของและพบว่าออกmain() Func_i()คอมไพเลอร์อย่างใดพบว่าค่าส่งกลับโดยและให้มันไปFunc_i() printf()ผมยังไม่ทราบว่าคอมไพเลอร์ไม่สามารถหาประเภทผลตอบแทนFunc_i()ของ มันโดยปกติจะใช้เวลา (คาดเดา?) ประเภทผลตอบแทนของการที่จะเป็นFunc_i() intนั่นคือถ้ารหัสfloat Func_i()นั้นคอมไพเลอร์จะให้ข้อผิดพลาด: ประเภทที่ขัดแย้งFunc_i()กัน จากการสนทนาข้างต้นเราจะเห็นว่า: Func_i()คอมไพเลอร์สามารถหาค่าที่ส่งกลับโดย หากคอมไพเลอร์สามารถค้นหาค่าที่ส่งคืนโดยFunc_i()ออกมาmain()และค้นหาซอร์สโค้ดเหตุใดจึงไม่พบประเภทของ Func_i () ซึ่งกล่าวถึง อย่างชัดเจน คอมไพเลอร์ต้องรู้ว่าFunc_i()เป็นประเภทลอย - นั่นเป็นสาเหตุที่ทำให้เกิดข้อผิดพลาดของประเภทที่ขัดแย้งกัน หากคอมไพเลอร์รู้ว่าFunc_iเป็นประเภทลอยตัวแล้วทำไมมันยังถือว่าFunc_i()เป็นประเภท int และให้ข้อผิดพลาดของประเภทที่ขัดแย้งกัน? ทำไมมันไม่ได้ทำให้มันกลายFunc_i()เป็นประเภทลอย ผมมีข้อสงสัยเช่นเดียวกันกับการประกาศตัวแปร พิจารณารหัส "C" ต่อไปนี้: #include<stdio.h> main() { /* [extern int Data_i;]--omitted …

7
อะไรคือการใช้งานของบล็อกโดยพลการในสำนวน C?
บล็อกคือรายการคำสั่งที่จะดำเนินการ ตัวอย่างของการที่บล็อกเกิดขึ้นใน C อยู่หลังคำสั่ง while และใน if statement while( boolean expression) statement OR block if (boolean expression) statement OR block C ยังอนุญาตให้บล็อกถูกซ้อนในบล็อก ฉันสามารถใช้สิ่งนี้เพื่อนำชื่อตัวแปรมาใช้ใหม่ได้ฉันคิดว่าฉันชอบ 'x' int x = 0; while (x < 10) { { int x = 5; printf("%d",x) } x = x+1; } จะพิมพ์หมายเลข 5 สิบครั้ง ฉันเดาว่าฉันสามารถเห็นสถานการณ์ที่ทำให้จำนวนชื่อตัวแปรต่ำเป็นที่ต้องการ บางทีในการขยายตัวแมโคร อย่างไรก็ตามฉันไม่เห็นเหตุผลที่ยากลำบากที่จะต้องใช้คุณสมบัตินี้ …
15 c  syntax 

9
การเรียนรู้ C จำเป็นสำหรับวิทยาศาสตร์คอมพิวเตอร์หรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเป็นผู้พัฒนาส่วนหน้าซึ่งแทบไม่เห็นแม้แต่ไฟล์.hหรือ.cส่วนขยาย ฉันรู้ไวยากรณ์ C พื้นฐานฉันได้เรียนรู้ใน Unreality แต่ไม่เคยสนใจการเขียนโปรแกรมระดับต่ำเช่นนี้เพราะเป็นการตั้งค่าที่ง่ายเกินไปสำหรับสิ่งที่เรียบง่าย ฉันสนใจที่จะเรียนรู้ทุกแง่มุมของวิทยาการคอมพิวเตอร์ แต่ฉันต้องการที่จะเชื่อว่าฉันไม่จำเป็นต้องรู้ภาษาใดภาษาหนึ่งเพื่อเข้าใจแนวคิดส่วนใหญ่ทางวิทยาศาสตร์คอมพิวเตอร์ แต่เมื่อฉันเริ่มอ่านหนังสือและบทความเกี่ยวกับแนวคิดพื้นฐานทางวิทยาศาสตร์คอมพิวเตอร์เช่นโครงสร้างข้อมูลและการออกแบบอัลกอริทึมดูเหมือนว่าฉันต้องเรียนรู้ C เพราะตัวอย่างทั้งหมดและแม้แต่บทเรียนอยู่ใน C (และบางครั้ง Java) คำถามของฉันคือ C เป็นภาษาการเขียนโปรแกรมที่จำเป็นสำหรับวิทยาการคอมพิวเตอร์หรือเราเพิ่งจะมีทรัพยากรทั้งหมดของเราใน CS เขียนใน C หรือไม่? สามารถเรียนรู้วิทยาศาสตร์คอมพิวเตอร์โดยไม่ต้องเรียนรู้ C หรือไม่?

2
ทำไมคำหลักที่น่าเกลียดใน C11
ฉันกำลังอ่านร่างของข้อกำหนด C11 คำหลักที่แนะนำใหม่: ทุกคนรู้สึกเหมือนส่วนขยายที่กำหนดเองแทนที่จะใช้คำหลักที่สงวนมาตรฐานชอบ_Bool, _Alignof, _Atomicstruct, union, int ฉันรู้ว่ามาตรฐานโดยทั่วไปประกอบด้วยส่วนขยายมาตรฐาน ... แต่ถึงกระนั้นนี่มันแย่มาก! บางทีเราอาจจะจบลงด้วยการ__Long_Long_Reallylong_Integer_MSVC_2020_tคืบคลานในมาตรฐาน! ความเข้ากันได้แบบย้อนกลับของรหัสที่ไม่เป็นมาตรฐานเป็นเพียงเหตุผลเดียวของรูปแบบใหม่ของคำหลักหรือไม่
15 c  keywords 

8
วิศวกรรมย้อนกลับ: เป็นสิ่งที่ดีจริงๆ? [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันมีคำถามที่ไร้เดียงสา / มือใหม่: วิศวกรรมย้อนกลับดีอย่างไร ในฐานะโปรแกรมเมอร์ฉันควรเรียนรู้ศิลปะของวิศวกรรมย้อนกลับหรือไม่ โปรแกรมเมอร์ที่ได้รับผลประโยชน์มีประโยชน์อะไรบ้าง?

7
ฟังก์ชันของไลบรารี C ควรคาดหวังความยาวของสตริงหรือไม่?
ขณะนี้ฉันกำลังทำงานกับไลบรารีที่เขียนเป็น C ฟังก์ชันจำนวนมากของไลบรารีนี้คาดว่าจะมีสตริงเป็นchar*หรือconst char*ในอาร์กิวเมนต์ ฉันเริ่มต้นด้วยฟังก์ชั่นเหล่านั้นมักจะคาดหวังความยาวของสตริงsize_tเพื่อไม่ให้มีการยกเลิกค่า null อย่างไรก็ตามเมื่อเขียนการทดสอบสิ่งนี้ส่งผลให้มีการใช้งานบ่อยstrlen()เช่น: const char* string = "Ugh, strlen is tedious"; libFunction(string, strlen(string)); การวางใจให้ผู้ใช้ส่งผ่านสายอักขระที่ถูกยกเลิกอย่างถูกต้องจะนำไปสู่ความปลอดภัยที่น้อยลง แต่มีความรัดกุมมากกว่าและ (ในความคิดของฉัน) รหัสที่อ่านได้: libFunction("I hope there's a null-terminator there!"); ดังนั้นการปฏิบัติที่เหมาะสมที่นี่คืออะไร? ทำให้ API มีความซับซ้อนมากขึ้นในการใช้งาน แต่บังคับให้ผู้ใช้นึกถึงการป้อนข้อมูลหรือบันทึกข้อกำหนดสำหรับสตริงที่สิ้นสุดด้วยค่า null และเชื่อใจผู้โทร
15 c  api  strings 

7
อะไรคือข้อดี / ข้อเสียของการใช้ C แทนชุดประกอบ? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ตอนนี้ฉันกำลังเรียนวิศวกรรมในสาขาโทรคมนาคมและอิเล็กทรอนิกส์และเราได้ย้ายจากแอสเซมเบลอร์ไปที่ C ในการเขียนโปรแกรมไมโครโปรเซสเซอร์ ฉันสงสัยว่านี่เป็นความคิดที่ดี อะไรคือข้อดีและข้อเสียของ C เมื่อเทียบกับการประกอบ? ข้อดี / ข้อเสียที่ฉันเห็นคือ: ข้อดี: ฉันสามารถบอกได้ว่าไวยากรณ์ C นั้นง่ายกว่าการเรียนรู้มากกว่า Assembler ไวยากรณ์ C ใช้งานง่ายขึ้นสำหรับการสร้างโปรแกรมที่ซับซ้อนมากขึ้น การเรียนรู้ C นั้นมีประสิทธิภาพมากกว่าการเรียนรู้ผู้ประกอบเนื่องจากมีสิ่งที่พัฒนารอบ C มากกว่าผู้ประกอบการ ข้อเสีย: Assembler เป็นภาษาการเขียนโปรแกรมระดับต่ำกว่า C ดังนั้นมันจึงเป็นสิ่งที่ดีสำหรับการเขียนโปรแกรมโดยตรงกับฮาร์ดแวร์ มีความยืดหยุ่นมากยิ่งทำให้คุณทำงานกับหน่วยความจำขัดจังหวะการลงทะเบียนขนาดเล็ก ฯลฯ
15 c  low-level  assembly 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.