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

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

13
วิธีที่ง่ายที่สุดในการพลิกค่าบูลีน
ฉันแค่ต้องการพลิกบูลีนตามสิ่งที่มีอยู่แล้ว ถ้าเป็นจริง - ทำให้เป็นเท็จ หากเป็นเท็จ - ทำให้เป็นจริง นี่คือรหัสที่ตัดตอนมาของฉัน: switch(wParam) { case VK_F11: if (flipVal == true) { flipVal = false; } else { flipVal = true; } break; case VK_F12: if (otherVal == true) { otherValVal = false; } else { otherVal = true; } break; default: break; }
125 c++  c  boolean  boolean-logic 

9
ฟังก์ชันแฮชสำหรับสตริง
ฉันกำลังทำงานกับตารางแฮชในภาษาซีและฉันกำลังทดสอบฟังก์ชันแฮชสำหรับสตริง ฟังก์ชั่นแรกที่ฉันได้ลองคือเพิ่มรหัส ascii และใช้ modulo (% 100) แต่ฉันได้ผลลัพธ์ที่ไม่ดีกับการทดสอบข้อมูลครั้งแรก: 40 การชนกันสำหรับ 130 คำ ข้อมูลอินพุตสุดท้ายจะมี 8,000 คำ (เป็นพจนานุกรมที่เก็บไว้ในไฟล์) ตารางแฮชถูกประกาศเป็นตาราง int [10000] และมีตำแหน่งของคำในไฟล์ txt คำถามแรกคืออัลกอริทึมใดที่ดีที่สุดสำหรับการแฮชสตริง และจะกำหนดขนาดของตารางแฮชได้อย่างไร? ขอบคุณล่วงหน้า ! :-)


6
การอ้างอิงที่ไม่ได้กำหนดถึง `` pow 'และ `` floor'
ฉันกำลังพยายามสร้างเครื่องคำนวณ fibonacci อย่างง่ายในภาษา C แต่เมื่อรวบรวมgccบอกว่าฉันไม่มีฟังก์ชันธารและพื้น มีอะไรผิดปกติ รหัส: #include <stdio.h> #include <math.h> int fibo(int n); int main() { printf("Fib(4) = %d", fibo(4)); return 0; } int fibo(int n) { double phi = 1.61803399; return (int)(floor((float)(pow(phi, n) / sqrt(5)) + .5f)); } เอาท์พุท: gab@testvm:~/work/c/fibo$ gcc fib.c -o fibo /tmp/ccNSjm4q.o: In function `fibo': …

15
ค้นหาได้อย่างรวดเร็วว่ามีค่าอยู่ในอาร์เรย์ C หรือไม่
ฉันมีแอปพลิเคชั่นฝังตัวที่มี ISR ที่สำคัญตามเวลาซึ่งจำเป็นต้องวนซ้ำผ่านอาร์เรย์ขนาด 256 (ควรเป็น 1024 แต่ 256 เป็นค่าต่ำสุด) และตรวจสอบว่าค่าตรงกับเนื้อหาอาร์เรย์หรือไม่ A boolจะถูกตั้งค่าเป็นจริงในกรณีนี้ ไมโครคอนโทรลเลอร์คือ NXP LPC4357 แกน ARM Cortex M4 และคอมไพเลอร์คือ GCC ฉันได้รวมการเพิ่มประสิทธิภาพระดับ 2 ไว้แล้ว (3 ช้ากว่า) และวางฟังก์ชันใน RAM แทนแฟลช ฉันยังใช้เลขคณิตตัวชี้และการforวนซ้ำซึ่งทำการนับลงแทนการขึ้น (ตรวจสอบว่าi!=0เร็วกว่าการตรวจสอบว่าi<256) สรุปแล้วฉันจบลงด้วยระยะเวลา 12.5 ซึ่งจะต้องลดลงอย่างมากเพื่อให้เป็นไปได้ นี่คือรหัส (หลอก) ที่ฉันใช้ตอนนี้: uint32_t i; uint32_t *array_ptr = &theArray[0]; uint32_t compareVal = 0x1234ABCD; bool validFlag = …


5
#include ที่เหมาะสมสำหรับฟังก์ชัน 'sleep' ใน C คืออะไร?
ฉันใช้หนังสือ Objective-C ของ Big Nerd Ranch และเริ่มต้นด้วยการให้เราเขียนเป็นภาษา C ในสองสามบทแรก ในโปรแกรมหนึ่งของฉันที่ฉันสร้างขึ้นฉันใช้ฟังก์ชันสลีป ในหนังสือบอกให้ใส่#include <stdlib.h>ใต้#include <stdio.h>ส่วน สิ่งนี้ควรจะกำจัดคำเตือนที่ระบุว่า "การประกาศฟังก์ชัน 'สลีป' โดยนัยไม่ถูกต้องใน C99" แต่ด้วยเหตุผลบางอย่างหลังจากที่ฉันใส่#include <stdlib.h>คำเตือนก็ไม่หายไป .. ปัญหานี้ไม่ได้หยุดโปรแกรมไม่ให้ทำงานได้ดี แต่ฉันแค่อยากรู้ว่า#includeฉันต้องใช้อะไร!
124 c  sleep 

5
C, C99, ANSI C และ GNU C ต่างกันอย่างไร?
ฉันได้เริ่มฝึกเขียนโปรแกรมบนcodechefและสับสนกับความแตกต่างระหว่าง C และ C99 C หมายถึงอะไรที่นี่? มันคือ C89? ตรวจสอบภาษาที่ด้านล่างของการส่งนี้ มีทั้ง C และ C99 ฉันพบสิ่งที่เรียกว่า GNU C บนอินเทอร์เน็ตมี C สำหรับระบบ linux / unix ต่างกันหรือไม่ สิ่งเหล่านี้เป็นไปตามมาตรฐาน C โดย ANSI หรือไม่ ฉันได้อ่านในบางสถานที่ "C99 เข้มงวด" นี่คืออะไร? มีมาตรฐานอื่น ๆ ของ C ที่ใช้งานอยู่หรือไม่? มีสิ่งที่เรียกว่า C 4.3.2 หรือเป็นเวอร์ชัน gcc ที่ใช้อยู่ในปัจจุบัน? แก้ไข: นี้ , นี้ , นี้ช่วย ฉันจะค้นหาเพิ่มเติมและแก้ไขสิ่งที่ยังไม่มีคำตอบ …
124 c  gcc  c99  c89  ansi-c 

5
อะไรคือความแตกต่างระหว่างฟังก์ชัน“ คงที่” และ“ อินไลน์แบบคงที่”
IMO ทำให้ฟังก์ชันมีขอบเขตของหน่วยการแปลเท่านั้น อะไรคือความแตกต่างระหว่างฟังก์ชัน "static" และ "static inline" ทำไมinlineต้องใส่ไว้ในไฟล์ส่วนหัวไม่ใช่ใน.cไฟล์?
123 c  inline 

9
ฉันจะหาคำจำกัดความของ size_t ได้ที่ไหน
ฉันเห็นตัวแปรที่กำหนดด้วยประเภทนี้ แต่ฉันไม่รู้ว่ามันมาจากไหนหรือจุดประสงค์ของมันคืออะไร ทำไมไม่ใช้ int หรือไม่ได้ลงนาม int? (ประเภทที่ "คล้ายกัน" อื่น ๆ ล่ะ void_t ฯลฯ )
123 c++  c  variables 

5
ความแตกต่างระหว่าง * ptr + = 1 และ * ptr ++ ใน C
ฉันเพิ่งเริ่มศึกษา C และเมื่อทำตัวอย่างหนึ่งเกี่ยวกับการส่งตัวชี้ไปยังตัวชี้เป็นพารามิเตอร์ของฟังก์ชันฉันพบปัญหา นี่คือโค้ดตัวอย่างของฉัน: #include <stdio.h> #include <string.h> #include <stdlib.h> int* allocateIntArray(int* ptr, int size){ if (ptr != NULL){ for (int i = 0; i < size; i++){ ptr[i] = i; } } return ptr; } void increasePointer(int** ptr){ if (ptr != NULL){ *ptr += 1; /* <----------------------------- This is …

6
วิธีการทำงานกับจำนวนเชิงซ้อนใน C?
ฉันจะทำงานกับจำนวนเชิงซ้อนใน C ได้อย่างไร? ฉันเห็นว่ามีcomplex.hไฟล์ส่วนหัว แต่ไม่ได้ให้ข้อมูลเกี่ยวกับวิธีการใช้งานมากนัก วิธีการเข้าถึงส่วนจริงและจินตนาการอย่างมีประสิทธิภาพ? มีฟังก์ชันดั้งเดิมในการรับโมดูลและเฟสหรือไม่?
122 c  complex-numbers 

3
ความหมายของ "__attribute __ ((บรรจุ, จัดชิด (4)))" คืออะไร
เป็นภาษาซีเขียนว่า: typedef struct __attribute__((packed, aligned(4))) Ball { float2 delta; float2 position; //float3 color; float size; //int arcID; //float arcStr; } Ball_t; Ball_t *balls; กรุณาบอกความหมายของมันและจะใช้คีย์เวิร์ดนี้อย่างไร
122 c  gcc 

5
อาร์เรย์ที่มีองค์ประกอบศูนย์ต้องการอะไร
ในโค้ดเคอร์เนลของลินุกซ์ฉันพบสิ่งต่อไปนี้ซึ่งฉันไม่เข้าใจ struct bts_action { u16 type; u16 size; u8 data[0]; } __attribute__ ((packed)); รหัสอยู่ที่นี่: http://lxr.free-electrons.com/source/include/linux/ti_wilink_st.h ความต้องการและวัตถุประสงค์ของอาร์เรย์ข้อมูลที่มีองค์ประกอบเป็นศูนย์คืออะไร?

6
ซ็อกเก็ตเชื่อมต่อ () กับผูก ()
ทั้งสองconnect()และbind()ระบบเรียก 'เชื่อมโยง' ตัวอธิบายไฟล์ซ็อกเก็ตไปยังที่อยู่ (โดยทั่วไปคือการรวมกันของ ip / พอร์ต) ต้นแบบของพวกเขามีดังนี้: - int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); และ int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 2 สายต่างกันอย่างไร? ควรใช้connect()เมื่อใดและเมื่อbind()ใด โดยเฉพาะในโค้ดไคลเอ็นต์เซิร์ฟเวอร์ตัวอย่างบางตัวพบว่าไคลเอ็นต์กำลังใช้งานconnect()และเซิร์ฟเวอร์กำลังใช้การbind()โทร เหตุผลไม่ชัดเจนสำหรับฉัน

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