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

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

22
ตัวดำเนินการ“ ->” ใน C ++ คืออะไร
ตั้งค่าไว้ที่Stack Overflow แล้วใช่ไหม : Чтотакоеоператор "->" ในС ++? หลังจากที่ได้อ่านคุณลักษณะที่ซ่อนอยู่และมุมมืดของ C ++ / STLบนcomp.lang.c++.moderatedฉันรู้สึกประหลาดใจอย่างสมบูรณ์ที่ต่อไปนี้ข้อมูลที่รวบรวมและทำงานทั้งใน Visual Studio 2008 และ G ++ 4.4 นี่คือรหัส: #include <stdio.h> int main() { int x = 10; while (x --> 0) // x goes to 0 { printf("%d ", x); } } เอาท์พุท: 9 8 7 6 …

10
ปรับปรุงประสิทธิภาพ INSERT ต่อวินาทีของ SQLite
การเพิ่มประสิทธิภาพของ SQLite นั้นยุ่งยาก ประสิทธิภาพการแทรกจำนวนมากของแอพพลิเคชั่น C สามารถเปลี่ยนจาก 85 เม็ดต่อวินาทีไปเป็นมากกว่า 96,000 เม็ดต่อวินาที! พื้นหลัง:เรากำลังใช้ SQLite เป็นส่วนหนึ่งของแอปพลิเคชันเดสก์ท็อป เรามีข้อมูลการกำหนดค่าจำนวนมากที่เก็บไว้ในไฟล์ XML ที่มีการแยกวิเคราะห์และโหลดลงในฐานข้อมูล SQLite เพื่อการประมวลผลเพิ่มเติมเมื่อเริ่มต้นแอปพลิเคชัน SQLite นั้นเหมาะสำหรับสถานการณ์นี้เพราะมันรวดเร็วไม่ต้องมีการกำหนดค่าพิเศษและฐานข้อมูลจะถูกเก็บไว้ในดิสก์เป็นไฟล์เดียว เหตุผล: ตอนแรกฉันรู้สึกผิดหวังกับการแสดงที่ฉันได้เห็น ปรากฎว่าประสิทธิภาพของ SQLite อาจแตกต่างกันอย่างมีนัยสำคัญ (ทั้งสำหรับการแทรกจำนวนมากและการเลือก) ขึ้นอยู่กับวิธีการกำหนดค่าฐานข้อมูลและวิธีการที่คุณใช้ API ไม่ใช่เรื่องง่ายที่จะคิดออกว่าตัวเลือกและเทคนิคทั้งหมดเป็นอย่างไรดังนั้นฉันจึงคิดว่าควรสร้างรายการวิกิชุมชนนี้เพื่อแบ่งปันผลลัพธ์กับผู้อ่าน Stack Overflow เพื่อช่วยคนอื่น ๆ ในการตรวจสอบปัญหาเดียวกัน การทดลอง:แทนที่จะพูดถึงเคล็ดลับประสิทธิภาพในแง่ทั่วไป (เช่น"ใช้ธุรกรรม!" ) ฉันคิดว่ามันดีที่สุดในการเขียนรหัส C และวัดผลกระทบของตัวเลือกต่างๆ เราจะเริ่มด้วยข้อมูลง่ายๆ: ไฟล์ข้อความที่คั่นด้วยแท็บ TAB ขนาด 28 MB (ประมาณ 865,000 บันทึก) ของตารางการขนส่งที่สมบูรณ์สำหรับเมืองโตรอนโต …


28
ฉันจะส่งผลของ malloc หรือไม่?
ในคำถามนี้มีคนแนะนำในการแสดงความคิดเห็นว่าฉันไม่ควรแสดงผลลัพธ์mallocเช่น int *sieve = malloc(sizeof(int) * length); ค่อนข้างมากกว่า: int *sieve = (int *) malloc(sizeof(int) * length); ทำไมถึงเป็นเช่นนี้?
2407 c  malloc  casting 

28
อะไรคือความแตกต่างระหว่าง #include <filename> และ #include“ filename”
ในภาษาการเขียนโปรแกรม C และ C ++ ความแตกต่างระหว่างการใช้วงเล็บมุมและการใช้อัญประกาศในincludeคำสั่งมีดังนี้ #include &lt;filename&gt; #include "filename"

10
ทำไมการเติมแบบวนรอบในแบบวนรอบจึงเร็วกว่าการวนซ้ำแบบรวมกันมาก?
สมมติว่าa1, b1, c1และd1ชี้ไปที่หน่วยความจำและกองรหัสตัวเลขของฉันมีห่วงหลักดังต่อไปนี้ const int n = 100000; for (int j = 0; j &lt; n; j++) { a1[j] += b1[j]; c1[j] += d1[j]; } การวนซ้ำนี้จะดำเนินการ 10,000 ครั้งผ่านการforวนรอบนอกอื่น เพื่อเพิ่มความเร็วฉันเปลี่ยนรหัสเป็น: for (int j = 0; j &lt; n; j++) { a1[j] += b1[j]; } for (int j = 0; j &lt; …

4
อะไร ??!??! ผู้ประกอบการทำใน C?
ฉันเห็นสาย C ที่มีลักษณะเช่นนี้: !ErrorHasOccured() ??!??! HandleError(); มันรวบรวมอย่างถูกต้องและดูเหมือนว่าจะทำงานได้ ดูเหมือนว่ามันกำลังตรวจสอบว่ามีข้อผิดพลาดเกิดขึ้นหรือไม่และถ้ามีมันจะจัดการกับมัน แต่ฉันไม่แน่ใจจริงๆว่ามันกำลังทำอะไรอยู่หรือมันกำลังทำอะไรอยู่ ดูเหมือนว่าโปรแกรมเมอร์กำลังพยายามแสดงความรู้สึกเกี่ยวกับข้อผิดพลาด ฉันไม่เคยเห็น??!??!มาก่อนในภาษาการเขียนโปรแกรมใด ๆ และฉันไม่สามารถหาเอกสารได้ทุกที่ (Google ไม่ได้ช่วยในเรื่องคำค้นหา??!??!) มันทำอะไรและตัวอย่างของโค้ดทำงานอย่างไร
1990 c  operators  trigraphs 

5
คืออะไร ":-!!" ในรหัส C?
ฉันชนรหัสมาโครแปลก ๆ นี้ใน/usr/include/linux/kernel.h : /* Force a compilation error if condition is true, but also produce a result (of value 0 and type size_t), so the expression can be used e.g. in a structure initializer (or where-ever else comma expressions aren't permitted). */ #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) #define …
1665 c  linux  macros  linux-kernel 


18
ด้วยอาร์เรย์ทำไมเป็น [5] == 5 [a]
ตามที่โจเอลชี้ในพอดคาสต์ Stack Overflow # 34ในภาษาโปรแกรม C (aka: K &amp; R) มีการกล่าวถึงคุณสมบัติของอาร์เรย์ใน C:a[5] == 5[a] Joel บอกว่ามันเป็นเพราะเลขคณิตของตัวชี้ แต่ฉันก็ยังไม่เข้าใจ ทำไมa[5] == 5[a] ?

23
รวบรวมแอปพลิเคชันสำหรับใช้ในสภาพแวดล้อมที่มีกัมมันตภาพรังสีสูง
เรากำลังรวบรวมโปรแกรมฝัง C / C ++ ที่ถูกนำไปใช้ในอุปกรณ์ป้องกันในสภาพแวดล้อมที่ถล่มด้วยรังสี เรากำลังใช้ GCC และการคอมไพล์ข้ามสำหรับ ARM เมื่อนำไปใช้งานแอปพลิเคชันของเราจะสร้างข้อมูลที่ผิดพลาดและล่มบ่อยกว่าที่เราต้องการ ฮาร์ดแวร์ออกแบบมาสำหรับสภาพแวดล้อมนี้และแอปพลิเคชันของเราทำงานบนแพลตฟอร์มนี้มาหลายปี มีการเปลี่ยนแปลงที่เราสามารถทำกับรหัสของเราหรือการปรับปรุงเวลาคอมไพล์ที่สามารถทำเพื่อระบุ / แก้ไขข้อผิดพลาดที่อ่อนนุ่มและความเสียหายของหน่วยความจำที่เกิดจากเหตุการณ์เดียวพลิกคว่ำ ? นักพัฒนาซอฟต์แวร์รายอื่นประสบความสำเร็จในการลดผลกระทบที่เป็นอันตรายของข้อผิดพลาดที่อ่อนนุ่มในแอพพลิเคชั่นที่ทำงานนานหรือไม่?
1456 c++  c  gcc  embedded  fault-tolerance 

18
ความแตกต่างระหว่าง const int *, const int * const และ int const * คืออะไร
ฉันมักจะเลอะวิธีการใช้งานconst int*, const int * constและint const *อย่างถูกต้อง มีชุดของกฎที่กำหนดสิ่งที่คุณสามารถทำได้และทำไม่ได้? ฉันต้องการรู้สิ่งที่ควรทำและสิ่งที่ไม่ควรทำในแง่ของการมอบหมายผ่านไปยังฟังก์ชั่นอื่น ๆ
1356 c++  c  pointers  int  const 

11
พอยน์เตอร์ของฟังก์ชันใน C ทำงานอย่างไร
ฉันมีประสบการณ์เมื่อเร็ว ๆ นี้กับตัวชี้ฟังก์ชั่นใน C. ดังนั้นด้วยประเพณีการตอบคำถามของคุณเองฉันจึงตัดสินใจสรุปพื้นฐานเบื้องต้นเล็กน้อยสำหรับผู้ที่ต้องการดำน้ำแบบด่วนในเรื่อง
1232 c  function-pointers 

19
"คงที่" หมายถึงอะไรใน C
ฉันเห็นคำที่staticใช้ในที่ต่างๆในรหัส C มันเป็นเหมือนฟังก์ชั่นแบบคงที่ / คลาสใน C # (ที่มีการใช้งานร่วมกันทั่ววัตถุ)?
1135 c  syntax  static 


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