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

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

11
เมื่อฉันทดสอบความแตกต่างในเวลาระหว่างการเลื่อนและการคูณใน C ไม่มีความแตกต่าง ทำไม?
ฉันได้รับการสอนแล้วว่าการขยับเป็นเลขฐานสองนั้นมีประสิทธิภาพมากกว่าการคูณด้วย 2 ^ k ดังนั้นฉันต้องการทดสอบและฉันใช้รหัสต่อไปนี้เพื่อทดสอบ: #include <time.h> #include <stdio.h> int main() { clock_t launch = clock(); int test = 0x01; int runs; //simple loop that oscillates between int 1 and int 2 for (runs = 0; runs < 100000000; runs++) { // I first compiled + ran it a few …

7
ทักษะ C ++ สูงกว่าทักษะ C หรือไม่ [ปิด]
ฉันรู้สึกว่า C / C ++ ที่เห็นบ่อย ๆ ไม่ได้อธิบายทักษะของฉันในประวัติย่อของฉัน ดังนั้นฉันวางแผนที่จะแยกมันออกเป็นความรู้ C ++ ขั้นสูงและทักษะ C ปานกลาง คุณคิดว่าสิ่งนี้ทำให้ผู้อ่านสับสนหรือไม่? เธออาจคิดว่า: "C เป็นเซตย่อยของ C ++ ดังนั้นผู้ชายคนนี้จึงพยายามโทรหาฉัน" สิ่งที่ฉันพยายามจะบอกคือ: ฉันได้ทำโครงการ C ++ ในโลกแห่งความเป็นจริงในขณะที่โครงการ C ล้วนๆซึ่งเป็นงานอดิเรก คุณเห็นด้วยหรือไม่ว่าโปรแกรมเมอร์ C ++ ที่มีทักษะไม่จำเป็นต้องเป็นคนที่มีคุณสมบัติ C หรือคุณคิดว่าสวิตช์นี้สามารถทำได้อย่างง่ายดายหรือไม่?
28 c++  c  skills 

10
เหตุใดฉันจึงจะเรียนรู้ C ++ 11 โดยรู้จัก C และ C ++ [ปิด]
ฉันเป็นโปรแกรมเมอร์ใน C และ C ++ ถึงแม้ว่าฉันจะไม่ยึดติดกับภาษาใดภาษาหนึ่งและเขียนส่วนผสมของทั้งสอง บางครั้งมีรหัสในชั้นเรียนอาจมีตัวดำเนินการมากเกินไปหรือแม่แบบและโอ้ดีมาก STL ชัดวิธีดีกว่า บางครั้งการใช้ตัวชี้ฟังก์ชัน C แบบง่าย ๆ นั้นสามารถอ่านและล้างได้ง่ายกว่ามาก ดังนั้นฉันจึงพบความงามและการใช้งานได้จริงในทั้งสองภาษา ฉันไม่ต้องการพูดคุยเกี่ยวกับ "ถ้าคุณมิกซ์และคอมไพล์ด้วยคอมไพเลอร์ C ++ มันไม่ใช่มิกซ์อีกต่อไปมันคือ C ++ ทั้งหมด" ฉันคิดว่าเราทุกคนเข้าใจสิ่งที่ฉันหมายถึงโดยการผสมพวกเขา นอกจากนี้ฉันไม่ต้องการพูดเกี่ยวกับ C vs C ++ คำถามนี้เกี่ยวกับ C ++ 11 C ++ 11 แนะนำสิ่งที่ฉันคิดว่าเป็นการเปลี่ยนแปลงที่สำคัญกับวิธีการทำงานของ C ++ แต่ได้แนะนำกรณีพิเศษจำนวนมากข้อยกเว้นและความผิดปกติที่เปลี่ยนวิธีการทำงานของคุณลักษณะที่แตกต่างกันในสถานการณ์ที่แตกต่างกันวางข้อ จำกัด ในการสืบทอดหลายแบบ ของตัวอักษรสตริงแลมบ์ดาจับตัวแปรฟังก์ชั่น ฯลฯ ฉันรู้ว่าในบางจุดในอนาคตเมื่อคุณพูดว่า C ++ ทุกคนจะถือว่า C ++ …
28 learning  c++  c  c++11 

9
เหตุใด Scala ไม่ถูกนำไปใช้กับ C หรือ C ++
ไม่มีใครรู้ว่าทำไม Scala ถูกนำไปใช้ใน Java และ. NET แทนที่จะเป็น C หรือ C ++? ภาษาส่วนใหญ่ใช้กับ Cor C ++ [เช่น Erlang, Python, PHP, Ruby, Perl] ข้อดีของ Scala ที่นำมาใช้ใน Java และ. NET นอกเหนือจากการให้สิทธิ์การเข้าถึงไลบรารี Java และ. NET คืออะไร? UPDATE สกาล่าจะไม่ได้รับประโยชน์มากขึ้นหากนำไปใช้ใน C เพราะสามารถปรับได้ดีกว่าการพึ่งพา JVM
28 java  c++  .net  c  scala 

2
เหตุใดจึงเลือกเครื่องหมายเปอร์เซ็นต์ (%) เป็นตัวระบุรูปแบบสำหรับตระกูลของฟังก์ชั่น printf
ทุกคนรู้ว่าอย่างน้อยใน C คุณใช้printfตระกูลฟังก์ชันเพื่อพิมพ์สตริงที่จัดรูปแบบ และฟังก์ชั่นเหล่านี้ใช้เครื่องหมายเปอร์เซ็นต์ ( %) เพื่อระบุจุดเริ่มต้นของตัวระบุรูปแบบ ยกตัวอย่างเช่น%dหมายถึงการพิมพ์intและวิธีการในการพิมพ์%u unsigned intหากคุณไม่คุ้นเคยกับการprintfทำงานของตัวยึดตำแหน่งและการจัดรูปแบบหรือเพียงต้องการทบทวนบทความ Wikipediaเป็นจุดเริ่มต้นที่ดี คำถามของฉันคือมีเหตุผลที่น่าสนใจเป็นพิเศษหรือไม่ว่าทำไมจึงควรเลือกใช้ตัวเลือกรูปแบบในอนาคตในอนาคต เห็นได้ชัดว่าการตัดสินใจทำมานานแล้ว (น่าจะเป็นบรรพบุรุษของภาษา C) และมันก็เป็น "มาตรฐาน" มากขึ้นเรื่อย ๆ ตั้งแต่นั้นมา (ไม่เพียง แต่ใน C แต่ยังอยู่ในภาษาอื่นอีกมากมาย ได้ปรับใช้ไวยากรณ์กับองศาที่แตกต่างกัน) ดังนั้นมันจึงสายเกินไปที่จะเปลี่ยนแปลง แต่ฉันก็ยังสงสัยว่าใครมีความเข้าใจว่าทำไมตัวเลือกนี้อาจเกิดขึ้นตั้งแต่แรกและไม่ว่ามันจะสมเหตุสมผลหรือไม่ถ้าเป็นคนออกแบบภาษาใหม่ด้วยฟังก์ชั่นที่คล้ายกัน ตัวอย่างเช่นด้วย C # (และตระกูลอื่น ๆ ของ. NET languages) Microsoft ตัดสินใจแตกต่างกันเล็กน้อยเกี่ยวกับการทำงานของฟังก์ชั่นการจัดรูปแบบสตริง แม้ว่าความปลอดภัยบางประเภทสามารถบังคับใช้ได้ที่นั่น (ไม่เหมือนกับการนำไปใช้printfใน C) และดังนั้นจึงไม่จำเป็นต้องมีการระบุประเภทของพารามิเตอร์ที่สอดคล้องกันพวกเขาตัดสินใจที่จะใช้เครื่องหมายปีกกาคู่ (ดัชนีศูนย์{}) เป็นตัวระบุรูปแบบเช่น: string output = String.Format("In {0}, the temperature …
27 c  history 

2
ความแตกต่างระหว่าง function () และ function (void) คืออะไร?
ฉันเคยได้ยินว่ามันเป็นวิธีปฏิบัติที่ดีในการเขียนฟังก์ชั่นที่ไม่ได้รับอะไรเป็นพารามิเตอร์เช่นนี้: int func(void); แต่ฉันได้ยินว่าวิธีที่ถูกต้องในการแสดงออกเช่นนี้: int func(); ความแตกต่างระหว่างการประกาศฟังก์ชั่นทั้งสองนี้ในทั้ง C และ C ++ คืออะไร?

7
เหตุใดจึงต้องใช้ "การจัดการ" แบบทึบซึ่งต้องใช้การคัดเลือกใน Public API แทนที่จะเป็นตัวชี้ struct
ฉันกำลังประเมินห้องสมุดซึ่งปัจจุบัน API สาธารณะมีลักษณะเช่นนี้: libengine.h /* Handle, used for all APIs */ typedef size_t enh; /* Create new engine instance; result returned in handle */ int en_open(int mode, enh *handle); /* Start an engine */ int en_start(enh handle); /* Add a new hook to the engine; hook handle returned in h2 …

5
เทมเพลต C ++ เป็นเพียงแมโครชนิดหนึ่งที่ได้รับการยกย่องหรือไม่?
จากการเปรียบเทียบที่แตกต่างกันระหว่างเทมเพลต C ++ และเจเนอรัล C # / Java เช่นนี้ - /programming/31693/what-are-the-differences-between-generics-in-c-and-java-and-templates-in-c/31929#31929 ฉันเข้าใจว่ามีการใช้เทมเพลต C ++ โดยการประมวลผลล่วงหน้าบางอย่าง (การแทนที่ข้อความธรรมดาก่อนการแยกวิเคราะห์) ไม่ได้รวบรวม เนื่องจากการตรวจสอบชนิดในเทมเพลต C ++ มีลักษณะคล้ายกับมาโคร C ฉันหมายความว่าหากมีข้อผิดพลาดบางอย่างพวกเขาเป็นข้อผิดพลาดจากรหัสที่สร้างขึ้นหลังจากการประมวลผลบล็อกรหัส templated ไม่ใช่จากแม่แบบเอง กล่าวอีกนัยหนึ่งมันเป็นแค่มาโครระดับสูงในซี จากนั้นฉันก็พบข้อเท็จจริงอื่น ๆ ที่สนับสนุนสิ่งนี้ - ฉันคิดว่าถ้ามีการใช้เทมเพลต C ++ โดยการประมวลผลล่วงหน้าจะมีปัญหากับการเชื่อมโยงแบบไดนามิก (โดยใช้. dll) และ googling ที่รวดเร็วสนับสนุนสิ่งนี้ อีกจุดคือค่าคงที่จำนวนเต็มสามารถส่งผ่านเป็นอาร์กิวเมนต์ไปยังเทมเพลต และมันยังรองรับการเรียกซ้ำบางประเภท แต่การเรียกซ้ำนี้ไม่พบในรหัสแอสเซมบลีที่รวบรวม / เครื่อง สิ่งที่เรียกซ้ำได้รับการจัดการในเวลารวบรวมโดยการสร้างฟังก์ชั่นสำหรับทุกการโทรซ้ำและจึงมีไบนารีที่ปฏิบัติการขนาดใหญ่ แต่เร็วกว่า แม้ว่าจะแตกต่างจากแมโคร C แต่มีความสามารถที่เหนือกว่า แต่เท็มเพลต …
27 c++  c  compiler  templates  macros 

9
เหตุใดจึงควรปิดการใช้งานคำเตือนคอมไพเลอร์?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 8 ปีที่ผ่านมา คำตอบนี้และความคิดเห็นที่เพิ่มเข้าไปแสดงวิธีปิดการใช้งานคำเตือนคอมไพเลอร์หลายคำ#pragmaสั่งโดยใช้คำสั่ง ทำไมหนึ่งต้องการทำเช่นนั้น? โดยปกติแล้วคำเตือนจะอยู่ที่เหตุผลและฉันก็รู้สึกเสมอว่าเป็นเหตุผลที่ดี มี "กรณีที่ถูกต้อง" ที่คำเตือนควรปิดการใช้งานหรือไม่ ตอนนี้ฉันนึกอะไรไม่ออกเลย แต่นั่นอาจเป็นแค่ฉัน
26 c#  c++  c  warnings 

3
เหตุใด int จึงใช้เวลา 12 ไบต์ในเครื่องบางเครื่อง
ฉันสังเกตเห็นสิ่งที่แปลกหลังจากรวบรวมรหัสนี้ในเครื่องของฉัน: #include <stdio.h> int main() { printf("Hello, World!\n"); int a,b,c,d; int e,f,g; long int h; printf("The addresses are:\n %0x \n %0x \n %0x \n %0x \n %0x \n %0x \n %0x \n %0x", &a,&b,&c,&d,&e,&f,&g,&h); return 0; } ผลที่ได้คือ โปรดสังเกตว่าระหว่างทุก int แอดเดรสจะมีความแตกต่าง 4 ไบต์ อย่างไรก็ตามระหว่าง int สุดท้ายและ int ยาวมีความแตกต่าง 12 ไบต์: …
26 c  memory  pointers 

5
วิธีให้โปรแกรมที่แตกต่างกันสองภาษาที่มีสองภาษาต่างกันโต้ตอบกันอย่างไร
ฉันไม่รู้ว่ามันกว้างเกินไปหรือไม่ แต่ฉันเป็นโปรแกรมเมอร์อายุน้อยที่ยังเรียนอยู่ในวิทยาลัย ฉันรู้สึกว่าฉันมีภาษาที่ดีพอสำหรับภาษาอื่นและมีพื้นฐานที่ดี แต่ฉันสะดุดที่จะคิดว่าถ้าเช่นฉันพยายามสร้างโปรแกรมและบอกว่าฉันเขียนส่วนหนึ่งในหลามเพียงเพราะมันง่ายและทำงาน แต่โปรแกรมนี้จะต้องได้รับผลลัพธ์จากโปรแกรมอื่นที่ฉันเขียน ใน C และฉันใช้ C เนื่องจากความเร็ว ฉันไม่แน่ใจว่าจะให้โปรแกรมและภาษาที่ต่างกันสองแบบโต้ตอบกันอย่างไรเพื่อสร้างโปรแกรมทั้งหมดหนึ่งโปรแกรม ฉันคิดเหมือนว่าคุณสามารถเขียนไฟล์ได้ แต่ถ้าโปรแกรมไพ ธ อนและโปรแกรม C เข้าถึงไฟล์ฉันจะต้องคิดถึงล็อค เวลาส่วนใหญ่ที่ฉันทำนี่คือการนำเข้าไฟล์เข้าสู่โปรแกรม แต่ในกรณีนั้นพวกเขาเป็นภาษาเดียวกันดังนั้นมันจึงเป็นเรื่องง่ายฉันแค่ใช้ฟังก์ชั่นการนำเข้า แต่ด้วยสองภาษา / โปรแกรมที่โต้ตอบกันเพื่อสร้างผลลัพธ์หนึ่งเหนียว . ฉันกำลังคิดเกี่ยวกับคำถามนี้เพราะฉันกำลังคิดที่จะดำน้ำในการสร้างแอปพลิเคชันเว็บขั้นพื้นฐานเพียงเพื่อเรียนรู้ แต่ฉันไม่รู้ว่าจะพูดไฟล์จาวาสคริปต์แบบโต้ตอบกับสิ่งที่ฉันเขียนในภาษาไพ ธ อนหรือในทางกลับกันได้อย่างไร ฉันรู้สึกเหมือนฉันกำลังพลาดอะไรบางอย่างที่นี่และไม่เข้าใจ ขออภัยถ้าคำถามนี้กว้างเกินไป แต่ฉันไม่พบคำตอบที่ชัดเจนออนไลน์ฉันพยายามค้นหา opensource webapp แต่ไม่เข้าใจคำตอบจริงๆจากนั้นให้อภัยฉันอีกครั้งถ้าคำถามดูเหมือนว่าฉันคิดว่าโง่ นี่เป็นสถานที่ที่ดีที่จะถามฉันรักการอ่านบน stackexchange ขอบคุณสำหรับการตอบกลับใด ๆ
26 python  c 

3
ทำไมถึงต้องเพิ่มพอยน์เตอร์?
ฉันเพิ่งเริ่มเรียนรู้ C ++ และเป็นคนส่วนใหญ่ (ตามสิ่งที่ฉันได้อ่าน) ฉันกำลังดิ้นรนกับพอยน์เตอร์ ไม่ใช่ในความหมายดั้งเดิมฉันเข้าใจว่าพวกเขาคืออะไรและทำไมจึงใช้และวิธีที่มีประโยชน์อย่างไร แต่ฉันไม่เข้าใจว่าตัวชี้การเพิ่มขึ้นจะมีประโยชน์ใคร ๆ สามารถให้คำอธิบายว่าการเพิ่มพอยน์เตอร์เป็นอย่างไร แนวคิดที่มีประโยชน์และสำนวน C ++? คำถามนี้เกิดขึ้นหลังจากที่ฉันเริ่มอ่านหนังสือA Tour of C ++โดย Bjarne Stroustrup ฉันแนะนำหนังสือเล่มนี้เพราะฉันค่อนข้างคุ้นเคยกับ Java และคนที่ Reddit บอกว่ามันจะเป็นหนังสือที่ 'ดีมาก' .
25 c++  c  pointers 

4
ภาษา C ++ ภาษาอื่น ๆ นอกเหนือจาก C?
ภาษา C ++ อนุญาตให้มีการผสมทั้ง C ++ และ C ในไฟล์ต้นฉบับหนึ่งไฟล์ ตัวอย่างเช่น, extern "C" { struct bar { /* ... */ } } C ++ หรือเคยรองรับภาษาอื่น ๆ นอกเหนือจากภาษา C หรือไม่? เช่นextern "Pascal"หรือextern "Haskell"

11
ทำไมโมฆะใน C หมายถึงไม่โมฆะ?
ในภาษาที่พิมพ์อย่างรุนแรงเช่น Java และ C #, void(หรือVoid) เป็นชนิดส่งคืนสำหรับวิธีการดูเหมือนจะหมายถึง: วิธีนี้จะไม่ส่งคืนสิ่งใดเลย ไม่มีอะไร ไม่มีการส่งคืน คุณจะไม่ได้รับอะไรจากวิธีนี้ สิ่งที่แปลกจริงๆคือใน C voidเป็นชนิดส่งคืนหรือเป็นชนิดพารามิเตอร์ method หมายความว่า: มันอาจเป็นอะไรก็ได้ คุณต้องอ่านซอร์สโค้ดเพื่อค้นหา โชคดี. หากเป็นตัวชี้คุณควรรู้ว่าคุณกำลังทำอะไรอยู่ ลองพิจารณาตัวอย่างต่อไปนี้ใน C: void describe(void *thing) { Object *obj = thing; printf("%s.\n", obj->description); } void *move(void *location, Direction direction) { void *next = NULL; // logic! return next; } เห็นได้ชัดว่าวิธีที่สองส่งกลับตัวชี้ซึ่งโดยความหมายอาจเป็นอะไรก็ได้ เนื่องจาก …
25 c  pointers 

2
การเปิดเผยรหัส C ++ ต่อสาธารณะเป็น C API หมายความว่าอย่างไรและข้อดีของการทำคืออะไร
ฉันมักจะได้ยินคนพูดว่าโปรแกรมเมอร์ C ++ ควรเปิดเผย API สาธารณะของห้องสมุด / ผลิตภัณฑ์เป็น C API นั่นหมายถึงอะไรและข้อดีของมันคืออะไร?
25 c++  c  api 

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