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

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

6
มีภาษาที่ transpiles ไป C ด้วยไวยากรณ์ที่ดีขึ้นหรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา CoffeeScript เป็นภาษาที่เปลี่ยนไปใช้ JavaScript ด้วยไวยากรณ์ที่สะอาดซึ่งได้รับแรงบันดาลใจจาก Ruby มีภาษาที่คล้ายกันซึ่ง transpiles เป็น C หรือไม่ทำให้โค้ดที่อ่านง่ายขึ้นโดยไม่กระทบต่อประสิทธิภาพ หากไม่มีสิ่งนี้เกิดขึ้นมีเหตุผลที่ดีที่จะไม่สร้างมันขึ้นมาหรือไม่?
19 c  syntax  compiler 

8
ทำไม x = x ++ ไม่ได้กำหนด?
มันไม่ได้กำหนดเพราะมันจะแก้ไขxสองครั้งระหว่างจุดลำดับ มาตรฐานบอกว่ามันไม่ได้กำหนดดังนั้นมันจึงไม่ได้กำหนด เท่าที่ฉันรู้ แต่ทำไม ความเข้าใจของฉันคือการห้ามการทำเช่นนี้จะช่วยให้คอมไพเลอร์เพิ่มประสิทธิภาพได้ดีขึ้น นี่อาจสมเหตุสมผลเมื่อ C ถูกประดิษฐ์ขึ้น แต่ตอนนี้ดูเหมือนจะเป็นข้อโต้แย้งที่อ่อนแอ ถ้าเราต้องสร้าง C ใหม่วันนี้เราจะทำแบบนี้หรือจะทำได้ดีกว่านี้ได้ไหม หรืออาจมีปัญหาที่ลึกกว่านั้นทำให้ยากที่จะกำหนดกฎที่สอดคล้องกันสำหรับนิพจน์ดังกล่าวดังนั้นจึงเป็นการดีที่สุดที่จะห้ามพวกเขา สมมติว่าเราต้องสร้าง C ใหม่ในวันนี้ ฉันอยากจะแนะนำกฎง่ายๆสำหรับการแสดงออกเช่นx=x++ซึ่งดูเหมือนว่าฉันจะทำงานได้ดีกว่ากฎที่มีอยู่ ฉันต้องการรับความคิดเห็นของคุณเกี่ยวกับกฎที่แนะนำเมื่อเปรียบเทียบกับกฎที่มีอยู่หรือคำแนะนำอื่น ๆ กฎที่แนะนำ: ระหว่างจุดลำดับลำดับของการประเมินผลจะไม่ได้รับการกำหนด ผลข้างเคียงเกิดขึ้นทันที ไม่มีพฤติกรรมที่ไม่ได้กำหนดที่เกี่ยวข้อง นิพจน์ประเมินค่านี้หรือว่า แต่จะไม่ฟอร์แมตฮาร์ดดิสก์ของคุณอย่างแน่นอน (ฉันไม่เคยเห็นการใช้งานที่x=x++ฟอร์แมตฮาร์ดดิสก์มาก่อน) ตัวอย่างนิพจน์ x=x++- xดีที่กำหนดไว้ไม่เปลี่ยนแปลง ครั้งแรกที่xจะเพิ่มขึ้น (ทันทีเมื่อx++ได้รับการประเมิน) xแล้วก็ค่าเดิมจะถูกเก็บไว้ใน x++ + ++x- ที่เพิ่มสองครั้งเพื่อประเมินx แม้ว่าอาจประเมินทั้งสองด้านก่อนผลลัพธ์ก็คือ(ด้านซ้ายก่อน) หรือ(ด้านขวาก่อน)2*x+2x + (x+2)(x+1) + (x+1) x = x + (x=3)- ไม่ได้, xการตั้งค่าเป็นอย่างใดอย่างหนึ่งหรือx+3 ถ้าด้านขวาได้รับการประเมินครั้งแรกก็ …

6
มันเป็นนิสัยที่ดีในการใช้ C นิพจน์ในรหัส C ++ หรือไม่
ที่โรงเรียนเราเริ่มเรียน C ในปีนี้แม้ว่าฉันจะอยู่ข้างหน้าของชั้นเรียนและฉันเรียนรู้ Java, C ++ และ C ในขณะที่ชั้นเรียนอยู่ที่ฐานของ C อย่างไรก็ตามฉันได้ทำเอกสารด้วยตัวเองอ่านหนังสือ บทความและฉันถามครูของฉันว่าทำไมฉันควรเรียนรู้ C และเธอบอกว่ามันเป็นรากฐานของ C ++ เมื่อฉันเริ่มเขียนโปรแกรมครั้งแรกฉันพบว่า C ++ ง่ายขึ้นมากฉันเรียนรู้ C ในภายหลัง แต่ในหนังสือคุณจะเห็นว่ารหัส C ทำงานได้ใน C ++ แต่มันก็ไม่ได้ตรงกันข้าม คำถามของฉันตรงไปตรงมา ~ เป็นนิสัยที่ดีในการใช้ C นิพจน์ใน C ++ หรือไม่ ผมขอยกตัวอย่าง: ควรรหัสนี้ #include <stdio.h> #include <iostream> int main() { int x; scanf("%d", &x); cout …
19 c++  c 

6
การเขียนโปรแกรม C ในปี 2011 [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน6 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ดวงจันทร์จำนวนมากที่ผ่านมาฉันตัดรหัส C สำหรับการใช้ชีวิตส่วนใหญ่ในขณะที่รักษาเซิร์ฟเวอร์ POP3 ที่รองรับระบบปฏิบัติการที่หลากหลาย (Linux, * BSD, HPUX, VMS ... ) ฉันวางแผนที่จะขัดเกลาทักษะ C ของฉันและเรียนรู้เล็กน้อยเกี่ยวกับการใช้ภาษาโดยการเขียน FORTH ที่เรียบง่ายใน C แต่ฉันสงสัยว่าจะมีการเปลี่ยนแปลงอย่างไรในโลก C ตั้งแต่ปี 2000 เมื่อฉันคิดว่า C ฉันคิดว่า ... comp.lang.c ANSI C ทุกที่ที่เป็นไปได้ (แต่ C89 เป็น C99 นั้นไม่ได้รับการสนับสนุนอย่างกว้างขวาง) gcc -Wall -ansi -pedantic แทนเครื่องมือวิเคราะห์แบบคงที่ Emacs …

4
ทำความเข้าใจกับกรอบสแต็คของการเรียกใช้ฟังก์ชันใน C / C ++ หรือไม่
ฉันกำลังพยายามที่จะเข้าใจว่าสแต็คเฟรมถูกสร้างขึ้นและตัวแปรใด (params) ถูกผลักไปยังสแต็กตามลำดับ ผลลัพธ์การค้นหาบางรายการแสดงว่าคอมไพเลอร์ C / C ++ ตัดสินใจตามการดำเนินการที่ดำเนินการภายในฟังก์ชั่น ตัวอย่างเช่นถ้าฟังก์ชั่นควรจะเพิ่มค่าการส่งผ่านโดย 1 (คล้ายกับตัวดำเนินการ ++) และส่งกลับมันจะทำให้พารามิเตอร์ทั้งหมดของฟังก์ชั่นและตัวแปรท้องถิ่นในการลงทะเบียน ฉันสงสัยว่าจะใช้รีจิสเตอร์ใดสำหรับพารามิเตอร์ส่งคืนหรือส่งผ่านตามค่า การอ้างอิงถูกส่งคืนอย่างไร คอมไพเลอร์เลือกระหว่าง eax, ebx, ecx และ edx อย่างไร ฉันต้องทราบอะไรบ้างในการทำความเข้าใจวิธีการลงทะเบียนการอ้างอิงสแต็คและฮีปที่ใช้สร้างและทำลายระหว่างการเรียกใช้ฟังก์ชัน
19 c++  c  compiler  stack 

8
คุณอ่านข้อผิดพลาดการคอมไพล์ C หรือ C ++ หลังจากข้อผิดพลาดแรกหรือไม่
ฉันไม่เคยเข้าใจเลยว่าทำไมคอมไพเลอร์ C และ C ++ จึงพยายามกู้คืนจากข้อผิดพลาดและทำการแยกวิเคราะห์ต่อไป เกือบตลอดเวลาข้อผิดพลาดแรกสร้างกระแสข้อผิดพลาดปลอมที่จะหายไปทันทีที่มีการแก้ไขข้อผิดพลาดแรก หลังจากประสบการณ์หลายปีฉันก็หยุดดูข้อผิดพลาดใด ๆ ยกเว้นไฟล์แรกของทุกไฟล์ ฉันรันคอมไพเลอร์แล้วทำอีกครั้งจนกว่าจะไม่มีข้อผิดพลาดอีก มันเป็นเรื่องธรรมดา

7
เหตุใดเราต้องรวม. h ขณะที่ทุกอย่างทำงานเมื่อรวมเฉพาะไฟล์. cpp
ทำไมเราต้องรวมทั้งไฟล์.hและ.cppในขณะที่เราสามารถทำให้มันทำงานได้โดยรวม.cppไฟล์ ตัวอย่างเช่นการสร้างfile.hที่มีการประกาศแล้วการสร้างคำนิยามที่มีและรวมทั้งในfile.cppmain.cpp อีกทางหนึ่ง: การสร้างการfile.cppประกาศ / คำจำกัดความที่มี (ไม่มีต้นแบบ) รวมถึงสิ่งmain.cppต่อไปนี้ ทั้งสองทำงานให้ฉัน ฉันไม่เห็นความแตกต่าง บางทีความเข้าใจในกระบวนการรวบรวมและเชื่อมโยงอาจช่วยได้บ้าง
18 c++  c  headers  linking  include 

2
เหตุใด C ถึงสูงมากในดัชนีความนิยมของ TIOBE ในขณะที่ C ++ ก็อยู่ที่นี่ด้วย แต่ก็ไม่ได้รับความนิยม [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันไม่สามารถเข้าใจเรื่องนี้ได้ ถ้า C ใช้งานมาก แต่ C ไม่ใช่ C ++, บางคนสามารถอธิบายเหตุผลที่สำคัญที่สุดที่ทำให้ C ใช้มากกว่า C ++ ได้หรือไม่? รหัส C นี้เขียนไว้ที่ไหน สิ่งนี้เกี่ยวกับภาคอุตสาหกรรมที่ต้องพึ่งพาการเขียนโปรแกรมที่จำเป็นอย่างยิ่ง แต่ไม่สามารถสนับสนุนค่าใช้จ่ายในการปรับใช้หรือปรับแต่งคอมไพเลอร์ C ++ ได้หรือไม่? มีแฮ็กเกอร์เคอร์เนลจำนวนมากไหม? tiobe เกี่ยวข้องหรือไม่ ฉันไม่เคยพบบทความหรือโพสต์แสดงความคิดเห็นหรืออธิบายว่าอันดับของ tiobe นั้นเป็นอย่างไรและสิ่งที่จริงพูดเกี่ยวกับสิ่งที่อุตสาหกรรมชอบและสิ่งที่มันสามารถบอกเกี่ยวกับสิ่งที่อุตสาหกรรมใช้จริงเพื่อระบุความต้องการที่แท้จริงของอุตสาหกรรม มันยากที่จะอธิบาย. ฉันเพิ่งพบว่ามันแปลก ๆ หลาย บริษัท ต้องการงาน C #, php, java และไม่ใช่งาน C หรือ …

8
เมื่อใดควรตรวจสอบพอยน์เตอร์สำหรับ NULL ใน C
สรุป : ควรฟังก์ชั่นใน C ตรวจสอบอยู่เสมอเพื่อให้แน่ใจว่าไม่ได้อ้างอิงNULLตัวชี้? หากไม่เหมาะสมที่จะข้ามการตรวจสอบเหล่านี้ รายละเอียด : ฉันได้อ่านหนังสือบางเล่มเกี่ยวกับการสัมภาษณ์การเขียนโปรแกรมและฉันสงสัยว่าระดับการตรวจสอบอินพุตที่เหมาะสมสำหรับอาร์กิวเมนต์ของฟังก์ชันใน C คืออะไร เห็นได้ชัดว่าฟังก์ชั่นใด ๆ ที่รับอินพุตจากผู้ใช้จำเป็นต้องทำการตรวจสอบความถูกต้องรวมถึงการตรวจสอบพอยน์เตอร์NULLก่อนที่จะทำการยกเลิกการอ้างอิง แต่ในกรณีของฟังก์ชั่นภายในไฟล์เดียวกันที่คุณไม่คาดว่าจะเปิดเผยผ่าน API ของคุณล่ะ ตัวอย่างเช่นต่อไปนี้ปรากฏในซอร์สโค้ดของ git: static unsigned short graph_get_current_column_color(const struct git_graph *graph) { if (!want_color(graph->revs->diffopt.use_color)) return column_colors_max; return graph->default_column_color; } หาก*graphเป็นNULLตัวชี้ Null จะถูกยกเลิกการพิจารณาอาจทำให้โปรแกรมขัดข้อง แต่อาจส่งผลให้เกิดพฤติกรรมที่คาดเดาไม่ได้อื่น ๆ ในทางกลับกันฟังก์ชั่นคือstaticดังนั้นโปรแกรมเมอร์อาจตรวจสอบอินพุตแล้ว ฉันไม่รู้ฉันเพิ่งเลือกแบบสุ่มเพราะมันเป็นตัวอย่างสั้น ๆ ในแอปพลิเคชันโปรแกรมที่เขียนใน C. ฉันเห็นสถานที่อื่น ๆ อีกหลายแห่งที่มีการใช้พอยน์เตอร์โดยไม่ตรวจสอบค่า NULL คำถามของฉันทั่วไปไม่เฉพาะเจาะจงกับส่วนรหัสนี้ ผมเห็นถามคำถามที่คล้ายกันในบริบทของการยกเว้นการมอบ …
18 c  validation  null 

8
มีภาษาระหว่าง C และ C ++ หรือไม่
ฉันชอบธรรมชาติที่เรียบง่ายและโปร่งใสของ C: เมื่อฉันเขียนรหัส C ฉันรู้สึกปราศจากข้อ จำกัด โดย "abstractions ที่รั่วไหล" และมักจะสามารถเดาได้อย่างชาญฉลาดเกี่ยวกับการชุมนุมที่ฉันผลิต ฉันชอบไวยากรณ์ที่เรียบง่ายและคุ้นเคยสำหรับ C. อย่างไรก็ตาม C ไม่มี doodads ที่เรียบง่ายและเป็นประโยชน์เหล่านี้ที่ C ++ นำเสนอเช่นคลาส, การจัดการที่ไม่ใช่ cstring แบบง่าย, ฯลฯ ฉันรู้ว่ามันเป็นไปได้ที่จะนำไปใช้ใน C โดยใช้ตารางกระโดดและสิ่งที่คล้ายกัน และไม่ปลอดภัยสำหรับประเภทด้วยเหตุผลต่างๆ ฉันไม่ใช่แฟนของการเน้นไปที่วัตถุใน C ++ และฉันก็อายที่จะใช้ตัวดำเนินการ 'ใหม่' และไม่ชอบ c ++ ดูเหมือนว่าจะมี hiccups มากเกินไปเพียงไม่กี่ตัวอย่างเช่นถูกใช้เป็นภาษาการเขียนโปรแกรมระบบ มีภาษาที่อยู่ระหว่าง C และ C ++ ในระดับของวิดเจ็ตและ doodads หรือไม่? ข้อจำกัดความรับผิดชอบ: ฉันหมายความว่านี่เป็นคำถามที่แท้จริง ฉันไม่ได้ตั้งใจที่จะโกรธคุณเพราะฉันไม่แบ่งปันมุมมองของคุณว่า …
18 c++  c 

3
ข้อดีของไวยากรณ์ภาษาจากซ้ายไปขวา
ฉันได้ดูบทสัมภาษณ์ของ Herb Sutter ที่ช่อง 9 และเขาพูดถึงตอนท้ายของวิดีโอว่าไวยากรณ์ของภาษาซ้าย - ขวาจะอยู่ในอันดับต้น ๆ ของนักแปลเพื่อมาตรฐาน C ++ ในอนาคต (แม้ว่าเขาจะยอมรับว่าการดัดแปลง C ++ ด้วยวิธีนั้น จะทำให้สัตว์ร้ายต่างไปจากเดิมอย่างสิ้นเชิง) นอกเหนือจาก: มนุษย์สามารถเข้าใจได้ชัดเจนขึ้นด้วยตาเปล่าเช่น //C syntax /*pointer to function taking a pointer to function(which takes 2 integers as arguments and returns an int), and an int as arguments and returning an int*/ int (*fp)(int …

5
คำแนะนำสำหรับนักเรียนที่มีความทะเยอทะยานในการสร้างเคอร์เนลของคุณเอง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเป็นนักศึกษามหาวิทยาลัยที่มีความทะเยอทะยานเป็นอย่างมากและต้องการเรียนรู้ทุกสิ่งที่มีความรู้เกี่ยวกับคอมพิวเตอร์ (ฉันชอบถ้าคุณต้องการฉันรักการเรียนรู้) เมื่อเร็ว ๆ นี้ฉันคิดว่ามันจะเป็นโครงการที่สนุก (แม้ว่าจะมีความยาว) ในการออกแบบและสร้างเคอร์เนลของฉันเอง ฉันได้รับข้อมูลพื้นฐานบางอย่างและฉันได้รวบรวมว่าฉันจำเป็นต้องมีต้นแบบการประชุมและ C / C ++ เพื่อให้งานนี้สำเร็จ ในขณะที่ฉันกำลังทำงานกับสิ่งเหล่านั้นฉันต้องการเรียนรู้วิธีเคอร์เนลใช้งานได้จริงจากมุมมองการเขียนโปรแกรม ฉันใช้เวลาหลายชั่วโมงในการเรียกดูรหัสของเคอร์เนลลินุกซ์ ขั้นตอนพื้นฐานในการสร้างเคอร์เนลคืออะไร สิ่งที่คุณต้องการที่อยู่? สั่งซื้อหรือทำสิ่งต่าง ๆ ? ฉันรู้ว่าฉันกัดมาก แต่ฉันตั้งใจมากพอที่จะรับมือกับมัน
18 c  assembly  kernel 

15
ต้นแบบในภาษาระดับที่สูงขึ้นเป็นเรื่องปกติหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ขณะนี้ฉันกำลังเล่นกับความคิดที่จะเริ่มดำเนินการในโครงการที่เกินความสามารถในการเขียนโปรแกรมปัจจุบันของฉันในภาษาที่ฉันมีประสบการณ์ในโลกแห่งความเป็นจริงเพียงเล็กน้อยใน (C) มันจะมีค่าสำหรับการสร้างต้นแบบในภาษาระดับสูงกว่าที่ฉันคุ้นเคย (เช่น Perl / Python / Ruby / C #) เพียงเพื่อฉันจะได้รับการออกแบบโดยรวมหรือไม่ ในที่สุดผลิตภัณฑ์สุดท้ายนั้นมีความอ่อนไหวด้านประสิทธิภาพ (เป็นเครื่องมือฐานข้อมูล) ดังนั้นตัวเลือกของ C แต่ฉันกลัวว่าการรู้ว่า C ดีจะทำให้ฉันสูญเสียป่าไปสำหรับต้นไม้ ในขณะที่ค้นหาคำถามที่คล้ายกันฉันสังเกตเห็นเพื่อนคนหนึ่งพูดถึงว่าโปรแกรมเมอร์ใช้ต้นแบบใน Prolog แล้วเหวี่ยงมันออกไปในแอสเซมเบลอร์

16
วันนี้คุณจะใช้ C สำหรับโครงการซอฟต์แวร์หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ถ้าใช่คุณจะใช้ที่ไหนและทำไม หากไม่มีโปรดอธิบายเหตุผลที่ C ไม่เป็นที่ยอมรับของคุณ

1
การเปรียบเทียบจำนวนเต็มทำงานอย่างไรภายใน
เช่นเมื่อเปรียบเทียบจำนวนเต็มสองจำนวนดังนี้ในภาษา C-like: if (3 > 2) { // do something } การตัดสินว่า 3 นั้นมากกว่า 2 (จริง) หรือไม่ (เท็จ) ที่ทำขึ้นภายใน?

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