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

C เป็นภาษาโปรแกรมทั่วไปที่ใช้สำหรับการเขียนโปรแกรมระบบ (ระบบปฏิบัติการและฝังตัว), ห้องสมุด, เกมและข้ามแพลตฟอร์ม แท็กนี้ควรใช้กับคำถามทั่วไปที่เกี่ยวข้องกับภาษา C ตามที่กำหนดไว้ในมาตรฐาน ISO 9899 (เวอร์ชันล่าสุด 9899: 2018 เว้นแต่ระบุไว้เป็นอย่างอื่น - นอกจากนี้ยังติดแท็กคำขอเฉพาะรุ่นด้วย c89, c99, c11 ฯลฯ ) C แตกต่างจาก C ++ และไม่ควรใช้ร่วมกับแท็ก C ++ หากไม่มีเหตุผล

18
เปรียบเทียบความเร็วกับ Project Euler: C กับ Python เทียบกับ Erlang และ Haskell
ฉันได้นำปัญหา # 12จากProject Euler มาเป็นแบบฝึกหัดการเขียนโปรแกรมและเพื่อเปรียบเทียบการใช้งานของฉันใน C, Python, Erlang และ Haskell เพื่อให้ได้เวลาดำเนินการที่สูงขึ้นฉันค้นหาหมายเลขสามเหลี่ยมแรกที่มีตัวหารมากกว่า 1,000 ตัวแทนที่จะเป็น 500 ตามที่ระบุในปัญหาดั้งเดิม ผลที่ได้คือ: ค: lorenzo@enzo:~/erlang$ gcc -lm -o euler12.bin euler12.c lorenzo@enzo:~/erlang$ time ./euler12.bin 842161320 real 0m11.074s user 0m11.070s sys 0m0.000s งูหลาม: lorenzo@enzo:~/erlang$ time ./euler12.py 842161320 real 1m16.632s user 1m16.370s sys 0m0.250s Python กับ PyPy: lorenzo@enzo:~/Downloads/pypy-c-jit-43780-b590cf6de419-linux64/bin$ time ./pypy …

4
ฉันจะประสบความสำเร็จสูงสุดทางทฤษฎีของ 4 FLOPs ต่อรอบได้อย่างไร
ประสิทธิภาพสูงสุดในเชิงทฤษฎีของการดำเนินการจุดลอย 4 จุด (ความแม่นยำสองเท่า) ต่อรอบสามารถทำได้บนซีพียู x86-64 ที่ทันสมัยของ Intel? เท่าที่ฉันเข้าใจมันใช้เวลาสามรอบสำหรับSSE addและห้ารอบเพื่อmulให้เสร็จสมบูรณ์บน CPU Intel ส่วนใหญ่ที่ทันสมัย ​​(ดูตัวอย่าง'Instruction Tables' ของ Agner Fog ) เนื่องจากการส่งไปป์ไลน์หนึ่งสามารถรับปริมาณงานหนึ่งaddต่อรอบหากอัลกอริทึมมีการสรุปอิสระอย่างน้อยสามครั้ง เนื่องจากเป็นจริงสำหรับแพ็กเกจaddpdรวมถึงaddsdรุ่นสเกลาร์และรีจิสเตอร์ SSE สามารถมีปริมาณงานสองdoubleรายการได้มากถึงสอง flops ต่อรอบ นอกจากนี้ดูเหมือนว่า (แม้ว่าฉันจะไม่เห็นเอกสารที่ถูกต้องเกี่ยวกับเรื่องนี้) addและmulสามารถดำเนินการในแบบคู่ขนานโดยให้ทรูพุตสูงสุดตามทฤษฎีของสี่ flops ต่อรอบ อย่างไรก็ตามฉันไม่สามารถจำลองประสิทธิภาพนั้นด้วยโปรแกรม C / C ++ อย่างง่าย ความพยายามที่ดีที่สุดของฉันส่งผลให้ประมาณ 2.7 flops / รอบ หากใครสามารถมีส่วนร่วม C / C ++ หรือโปรแกรมแอสเซมเบลอร์ที่แสดงให้เห็นถึงประสิทธิภาพสูงสุดที่จะได้รับการชื่นชมอย่างมาก ความพยายามของฉัน: #include <stdio.h> …

13
size_t ใน C คืออะไร
ฉันกำลังสับสนกับsize_tใน C. ฉันรู้ว่ามันจะถูกส่งกลับโดยsizeofผู้ประกอบการ แต่มันคืออะไรกันแน่? เป็นประเภทข้อมูลหรือไม่ สมมติว่าฉันมีforลูป: for(i = 0; i < some_size; i++) ฉันควรใช้int i;หรือsize_t i;?
626 c  int  size-t 

30
ฉันจะตรวจสอบจำนวนเต็มคูณล้นที่ไม่ได้ลงนามอย่างไร
Наэтотвопросестьответына กองมากเกินнарусском : Можнолинаязыках C / C ++ определитьцелочисленноепереполнение? ผมเขียนโปรแกรมใน C ++ เพื่อหาแนวทางแก้ไขปัญหาทั้งหมดของข = คที่, ขและคร่วมกันใช้ตัวเลขทั้งหมด 0-9 ครั้งว่า โปรแกรมวนลูปมากกว่าค่าของaและbและมันรันรูทีนการนับหลักทุกครั้งที่a , bและa bเพื่อตรวจสอบว่าเงื่อนไขหลักเป็นที่พอใจหรือไม่ อย่างไรก็ตามการแก้ปัญหาการปลอมสามารถสร้างขึ้นเมื่อขล้นขีด จำกัด จำนวนเต็ม ฉันสิ้นสุดการตรวจสอบนี้โดยใช้รหัสเช่น: unsigned long b, c, c_test; ... c_test=c*b; // Possible overflow if (c_test/b != c) {/* There has been an overflow*/} else c=c_test; // No …
618 c++  c  integer-overflow 

7
คุณจะส่งผ่านฟังก์ชั่นเป็นพารามิเตอร์ใน C ได้อย่างไร
ฉันต้องการสร้างฟังก์ชั่นที่ทำหน้าที่ส่งผ่านพารามิเตอร์ในชุดข้อมูล คุณจะส่งผ่านฟังก์ชั่นเป็นพารามิเตอร์ใน C ได้อย่างไร


9
วิธีการคำนวณปริมาณการใช้ CPU และหน่วยความจำจากภายในกระบวนการ?
ฉันเคยมีหน้าที่กำหนดพารามิเตอร์ประสิทธิภาพต่อไปนี้จากภายในแอปพลิเคชันที่ทำงานอยู่: หน่วยความจำเสมือนทั้งหมดที่มี หน่วยความจำเสมือนที่ใช้อยู่ในปัจจุบัน หน่วยความจำเสมือนที่กระบวนการของฉันใช้อยู่ในปัจจุบัน RAM ทั้งหมดที่มี RAM ที่ใช้ในปัจจุบัน RAM ที่กระบวนการของฉันใช้อยู่ในปัจจุบัน % CPU ที่ใช้อยู่ในปัจจุบัน % CPU ที่กระบวนการของฉันใช้อยู่ในปัจจุบัน รหัสต้องทำงานบน Windows และ Linux แม้ว่านี่จะเป็นงานมาตรฐาน แต่การค้นหาข้อมูลที่จำเป็นในคู่มือ (WIN32 API, เอกสาร GNU) และบนอินเทอร์เน็ตใช้เวลาหลายวันเพราะมีข้อมูลที่ไม่สมบูรณ์ / ไม่ถูกต้อง / ล้าสมัยในหัวข้อนี้ พบว่ามี เพื่อช่วยผู้อื่นให้พ้นจากปัญหาเดียวกันฉันคิดว่าเป็นความคิดที่ดีที่จะรวบรวมข้อมูลที่กระจัดกระจายทั้งหมดรวมถึงสิ่งที่ฉันพบจากการลองผิดลองถูกที่นี่ในที่เดียว
593 c++  c  memory  cpu 

26
ฉันจะรับรายการไฟล์ในไดเรกทอรีโดยใช้ C หรือ C ++ ได้อย่างไร
ฉันจะกำหนดรายการไฟล์ในไดเรกทอรีจากภายในรหัส C หรือ C ++ ได้อย่างไร ฉันไม่ได้รับอนุญาตให้ดำเนินการlsคำสั่งและแยกผลลัพธ์จากภายในโปรแกรมของฉัน
593 c++  c  file  directory 

23
อันไหนเร็วกว่า: ในขณะที่ (1) หรือขณะที่ (2)
นี่เป็นคำถามสัมภาษณ์ที่ผู้จัดการอาวุโสถาม ไหนเร็วกว่ากัน while(1) { // Some code } หรือ while(2) { //Some code } ผมบอกว่าทั้งสองมีความเร็วในการทำงานเดียวกันเป็นภายในแสดงออกwhileในที่สุดก็ควรประเมินหรือtrue falseในกรณีนี้ทั้งสองประเมินtrueและไม่มีคำแนะนำแบบมีเงื่อนไขพิเศษภายในwhileเงื่อนไข ดังนั้นทั้งสองจะมีความเร็วในการดำเนินการเท่ากันและฉันชอบในขณะที่ (1) แต่ผู้สัมภาษณ์กล่าวอย่างมั่นใจว่า: "ตรวจสอบพื้นฐานของคุณwhile(1)เร็วกว่าwhile(2)" (เขาไม่ได้ทดสอบความมั่นใจของฉัน) มันเป็นเรื่องจริงเหรอ? ดูเพิ่มเติม: "สำหรับ (;;)" เร็วกว่า "ขณะ (TRUE)" หรือไม่ ถ้าไม่ทำไมผู้คนถึงใช้มัน?


5
ทำไม“ ในขณะที่ (! feof (ไฟล์))” ผิดเสมอ
ฉันเห็นคนพยายามอ่านไฟล์แบบนี้ในโพสต์จำนวนมากเมื่อเร็ว ๆ นี้: #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { char *path = "stdin"; FILE *fp = argc > 1 ? fopen(path=argv[1], "r") : stdin; if( fp == NULL ) { perror(path); return EXIT_FAILURE; } while( !feof(fp) ) { /* THIS IS WRONG */ /* Read and …
573 c  file  while-loop  eof  feof 

8
ความแตกต่างระหว่างห้องสมุดแบบคงที่และที่ใช้ร่วมกัน?
อะไรคือความแตกต่างระหว่างห้องสมุดแบบคงที่และที่ใช้ร่วมกัน? ฉันใช้ Eclipse และมีโปรเจ็กต์หลายประเภทรวมถึง Static Libraries และ Shared Libraries? คนหนึ่งได้เปรียบกว่าอีกคนหนึ่งหรือเปล่า?



10
เหตุใด printf จึงไม่ลบออกหลังจากการโทรยกเว้นว่ามีการขึ้นบรรทัดใหม่ในสตริงรูปแบบ
ทำไมprintfไม่ล้างออกหลังจากการโทรยกเว้นว่ามีการขึ้นบรรทัดใหม่ในสตริงรูปแบบ พฤติกรรม POSIX นี้หรือไม่ ฉันจะprintfล้างทันทีทุกครั้งได้อย่างไร
539 c  printf  flush 

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