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


8
ประกาศตำแหน่งตัวแปรใน C
ฉันคิดมานานแล้วว่าใน C ตัวแปรทั้งหมดจะต้องถูกประกาศในตอนเริ่มต้นของฟังก์ชัน ฉันรู้ว่าใน C99 กฎเหมือนกันใน C ++ แต่อะไรคือกฎการวางประกาศตัวแปรสำหรับ C89 / ANSI C โค้ดต่อไปนี้คอมไพล์ด้วยgcc -std=c89และgcc -ansi: #include <stdio.h> int main() { int i; for (i = 0; i < 10; i++) { char c = (i % 95) + 32; printf("%i: %c\n", i, c); char *s; s = "some string"; …
129 c  declaration  c89 

3
เอาต์พุตโปรแกรมด้านล่าง 'C89' เมื่อรวบรวมในโหมด C89 และ `C99` เมื่อรวบรวมในโหมด C99 อย่างไร
ฉันพบโปรแกรม C นี้จากเว็บ: #include <stdio.h> int main(){ printf("C%d\n",(int)(90-(-4.5//**/ -4.5))); return 0; } สิ่งที่น่าสนใจของโปรแกรมนี้คือเมื่อคอมไพล์และรันในโหมด C89 มันจะพิมพ์C89และเมื่อคอมไพล์และรันในโหมด C99 มันจะพิมพ์C99ออกมา แต่ฉันไม่สามารถคิดออกว่าโปรแกรมนี้ทำงานอย่างไร คุณช่วยอธิบายว่าอาร์กิวเมนต์ที่สองของprintfงานในโปรแกรมข้างต้นได้อย่างไร
128 c  printf  comments  c99  c89 

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 

8
พฤติกรรมที่ไม่ได้กำหนดทางเทคนิคของ "แฮ็กโครงสร้าง" หรือไม่
สิ่งที่ฉันกำลังถามคือเคล็ดลับ "สมาชิกคนสุดท้ายของโครงสร้างมีความยาวผันแปร" ที่รู้จักกันดี มันจะเป็นดังนี้: struct T { int len; char s[1]; }; struct T *p = malloc(sizeof(struct T) + 100); p->len = 100; strcpy(p->s, "hello world"); เนื่องจากวิธีการจัดวางโครงสร้างในหน่วยความจำเราจึงสามารถซ้อนโครงสร้างบนบล็อกที่ใหญ่กว่าที่จำเป็นและปฏิบัติต่อสมาชิกตัวสุดท้ายราวกับว่ามันมีขนาดใหญ่กว่าที่1 charระบุ คำถามคือเทคนิคนี้เป็นพฤติกรรมที่ไม่ได้กำหนดทางเทคนิคหรือไม่? . ฉันคาดหวังว่าจะเป็นเช่นนั้น แต่ก็อยากรู้ว่ามาตรฐานพูดถึงเรื่องนี้อย่างไร PS: ฉันทราบถึงแนวทางของ C99 ในเรื่องนี้ฉันต้องการให้คำตอบยึดติดกับเวอร์ชันของเคล็ดลับตามที่ระบุไว้ด้านบนโดยเฉพาะ

3
จะหามาตรฐาน C89 / C90 ในรูปแบบ PDF ได้ที่ไหน?
ฉันกำลังมองหามาตรฐาน C89 / C90เวอร์ชันฟรีแต่หาไม่เจอเลย! ทำไมหายากจัง มาตรฐาน C99 และ C11 นั้นง่ายมากในการรับสำเนาบนอินเทอร์เน็ต แม้แต่ในคำถาม Stack Overflow ฉันจะค้นหาเอกสารมาตรฐาน C หรือ C ++ ปัจจุบันได้ที่ไหน และมาตรฐาน C การได้รับมาตรฐานไม่มีสิ่งที่ฉันกำลังมองหา ค้นหาเว็บไม่ได้ช่วยอย่างใดอย่างหนึ่งหรือไม่มาตรฐานเปิด
90 c  ansi  c89 

4
ทำไมฟังก์ชั่นนี้คืนความยาวที่ถูกต้องของสตริง? (การเพิ่มตัวชี้ถ่าน)
นี่คือฟังก์ชั่นที่นับจำนวนตัวอักษรในสตริง: int str_len(const char* s) { int i = 0; while(*(s++)) { i++; } return i; } ทำไมสิ่งนี้ถึงส่งคืนความยาวที่ถูกต้อง? "a"สมมติว่าผมเรียกฟังก์ชั่นนี้ด้วยเชือกที่เรียบง่าย จากนั้นsจะเพิ่มขึ้นในขณะที่ลูปดังนั้นค่าของsและiเป็นทั้ง 0
12 c  while-loop  strlen  c89 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.