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

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

4
เหตุใด C คอมไพเลอร์จึงปรับสวิตช์ให้เหมาะสมและหากต่างกัน
ฉันกำลังทำงานในโครงการส่วนบุคคลเมื่อเร็ว ๆ นี้เมื่อฉันเจอปัญหาแปลก ๆ ในวงที่แน่นมากฉันมีจำนวนเต็มที่มีค่าระหว่าง 0 ถึง 15 ฉันต้องได้รับ -1 สำหรับค่า 0, 1, 8, และ 9 และ 1 สำหรับค่า 4, 5, 12, และ 13 ฉันหันไปใช้ godbolt เพื่อตรวจสอบตัวเลือกสองสามตัวและรู้สึกประหลาดใจที่ดูเหมือนว่าคอมไพเลอร์ไม่สามารถปรับคำสั่งสวิตช์ให้เหมาะสมเช่นเดียวกับโซ่ถ้า ลิงก์อยู่ที่นี่: https://godbolt.org/z/WYVBFl รหัสคือ: const int lookup[16] = {-1, -1, 0, 0, 1, 1, 0, 0, -1, -1, 0, 0, 1, 1, 0, 0}; …

2
เหตุใด% f จึงพิมพ์ค่าขนาดใหญ่เมื่อค่าคงที่จุดลอยตัวถูกส่งผ่านแทนที่จะเป็นตัวแปร
ในโปรแกรมที่กำหนดไม่ฉันได้รับผลลัพธ์ที่แตกต่างกันสำหรับแต่ละเหตุผลprintfหรือไม่? #include <stdio.h> int main() { float c = 4.4e10; printf("%f\n", c); printf("%f\n", 4.4e10); return 0; } และมันแสดงเอาท์พุทต่อไปนี้: 44000002048.000000 44000000000.000000
9 c 

1
C พารามิเตอร์หลัก
ฉันเขียนโค้ดที่ต้องแสดงพารามิเตอร์หลัก แต่เมื่อฉันรวบรวมมันและพิมพ์ในโปรแกรม "*" จะแสดงโครงสร้างไฟล์ของฉัน คำสั่งใน cmd มีลักษณะเช่นนี้:program.exe 1 2 3 * #include <stdio.h> #include <stdlib.h> int main(int argc, char const* argv[]) { for (int i=0; i<argc; i++) printf("%s\n", argv[i]); return 0; } ผลลัพธ์คือ: program 1 2 3 program.c program.exe 10-03-20 11-02-20 และคำถามของฉัน: เป็นไปได้ไหมที่จะให้โปรแกรมพิมพ์ "*" แทนที่จะแสดงรายชื่อไฟล์ ขอบคุณในคำแนะนำ

4
การคำนวณรูตที่ซ้อนใน C
ฉันถูกขอให้คำนวณนิพจน์รูทที่ซ้อนกันต่อไปนี้โดยใช้การเรียกซ้ำเท่านั้น ฉันเขียนโค้ดด้านล่างที่ใช้งานได้ แต่พวกเขาอนุญาตให้เราใช้เพียงฟังก์ชั่นเดียวและ 1 อินพุตnเพื่อวัตถุประสงค์และไม่ใช่ 2 อย่างที่ฉันใช้ ใครสามารถช่วยฉันแปลงรหัสนี้เป็นฟังก์ชั่นเดียวที่จะคำนวณการแสดงออก? ลาดเทใช้ห้องสมุดใด ๆ <math.h>ยกเว้นจากฟังก์ชั่น เอาต์พุตสำหรับ n = 10: 1.757932 double rec_sqrt_series(int n, int m) { if (n <= 0) return 0; if (m > n) return 0; return sqrt(m + rec_sqrt_series(n, m + 1)); } double helper(int n) { return rec_sqrt_series(n, 1); }
9 c  recursion  sqrt 

2
ความแตกต่างระหว่างตัวกำหนดคุณสมบัติ const ใน C และตัวคัดกรอง const ใน C ++ คืออะไร
ฉันพบความคิดเห็นของผู้ใช้R .. : C และ C ++ ไม่ใช่ภาษาเดียวกัน โดยเฉพาะอย่างยิ่ง, C constมีอะไรจะทำอย่างไรกับ C const++ ฉันรู้ว่าความแตกต่างอย่างหนึ่งระหว่างconstqualifier ใน C และconstqualifier ใน C ++ คือการลิงก์เริ่มต้น วัตถุที่ประกาศที่ขอบเขตเนมสเปซที่constมีตัวระบุใน C ++ มีการเชื่อมโยงภายในขณะที่ C วัตถุที่constมีตัวระบุที่ประกาศที่ขอบเขตทั่วโลก (โดยไม่ต้องมีตัวระบุstaticก่อนหน้าconst) จะมีการเชื่อมโยงภายนอก แต่พวกเขาต่างกันอย่างไรระหว่างภาษาของ C และ C ++ ฉันคิดว่าทั้งคู่มีแนวคิดและจุดประสงค์ในภาษาทั้งสองแบบเดียวกัน คำถามของฉัน: ความแตกต่างระหว่างตัวกำหนดคุณสมบัติ const ใน C และตัวคัดกรอง const ใน C ++ คืออะไร คำตอบของ"const" แตกต่างกันอย่างไรใน C และ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.