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

4
ทำไมเราต้องพูดถึงชนิดข้อมูลของตัวแปรใน C
โดยปกติใน C เราต้องบอกคอมพิวเตอร์ถึงชนิดของข้อมูลในการประกาศตัวแปร เช่นในโปรแกรมต่อไปนี้ฉันต้องการพิมพ์ผลรวมของตัวเลขทศนิยมสองตัว X และ Y #include<stdio.h> main() { float X=5.2; float Y=5.1; float Z; Z=Y+X; printf("%f",Z); } ฉันต้องบอกคอมไพเลอร์ถึงชนิดของตัวแปร X คอมไพเลอร์ไม่สามารถระบุประเภทของXตัวเองได้หรือไม่ ใช่มันสามารถทำได้ถ้าฉันทำสิ่งนี้: #define X 5.2 ตอนนี้ฉันสามารถเขียนโปรแกรมโดยไม่บอกคอมไพเลอร์Xว่าเป็น: #include<stdio.h> #define X 5.2 main() { float Y=5.1; float Z; Z=Y+X; printf("%f",Z); } ดังนั้นเราจะเห็นว่าภาษา C มีคุณสมบัติบางอย่างที่ใช้ซึ่งสามารถกำหนดประเภทของข้อมูลด้วยตัวเอง ในกรณีของฉันมันกำหนดว่าXเป็นประเภทลอย ทำไมเราต้องพูดถึงประเภทของข้อมูลเมื่อเราประกาศบางสิ่งใน main ()? ทำไมถึงไม่สามารถคอมไพเลอร์กำหนดชนิดข้อมูลของตัวแปรในตัวของมันเองเช่นเดียวกับในmain()#define

5
เหตุใดจึงมี * การประกาศ * ของข้อมูลและฟังก์ชั่นที่จำเป็นในภาษา C เมื่อคำจำกัดความถูกเขียนในตอนท้ายของซอร์สโค้ด?
พิจารณารหัส "C" ต่อไปนี้: #include<stdio.h> main() { printf("func:%d",Func_i()); } Func_i() { int i=3; return i; } Func_i()ถูกกำหนดในตอนท้ายของซอร์สโค้ดและไม่มีการประกาศให้ก่อนที่จะใช้main()มัน ในเวลามากเมื่อคอมไพเลอร์เห็นFunc_i()ในmain()มันออกมาของและพบว่าออกmain() Func_i()คอมไพเลอร์อย่างใดพบว่าค่าส่งกลับโดยและให้มันไปFunc_i() printf()ผมยังไม่ทราบว่าคอมไพเลอร์ไม่สามารถหาประเภทผลตอบแทนFunc_i()ของ มันโดยปกติจะใช้เวลา (คาดเดา?) ประเภทผลตอบแทนของการที่จะเป็นFunc_i() intนั่นคือถ้ารหัสfloat Func_i()นั้นคอมไพเลอร์จะให้ข้อผิดพลาด: ประเภทที่ขัดแย้งFunc_i()กัน จากการสนทนาข้างต้นเราจะเห็นว่า: Func_i()คอมไพเลอร์สามารถหาค่าที่ส่งกลับโดย หากคอมไพเลอร์สามารถค้นหาค่าที่ส่งคืนโดยFunc_i()ออกมาmain()และค้นหาซอร์สโค้ดเหตุใดจึงไม่พบประเภทของ Func_i () ซึ่งกล่าวถึง อย่างชัดเจน คอมไพเลอร์ต้องรู้ว่าFunc_i()เป็นประเภทลอย - นั่นเป็นสาเหตุที่ทำให้เกิดข้อผิดพลาดของประเภทที่ขัดแย้งกัน หากคอมไพเลอร์รู้ว่าFunc_iเป็นประเภทลอยตัวแล้วทำไมมันยังถือว่าFunc_i()เป็นประเภท int และให้ข้อผิดพลาดของประเภทที่ขัดแย้งกัน? ทำไมมันไม่ได้ทำให้มันกลายFunc_i()เป็นประเภทลอย ผมมีข้อสงสัยเช่นเดียวกันกับการประกาศตัวแปร พิจารณารหัส "C" ต่อไปนี้: #include<stdio.h> main() { /* [extern int Data_i;]--omitted …

3
มันเป็นการดีที่จะกำหนดตัวแปรภายในวงหรือไม่? [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ผู้สอนของฉันเคยบอกฉันว่าฉันไม่ควรกำหนดตัวแปรภายในลูปแต่ฉันก็ยังคงไม่เข้าใจว่าทำไม อะไรคือข้อเสียของสิ่งนั้น? มีร่างกายใดสามารถอธิบายสิ่งนั้นให้ฉันได้บ้าง

8
อะไรคือข้อเสียที่เป็นไปได้ของการวางการประกาศในบล็อกด้านในแทนที่จะเป็นจุดเริ่มต้นของฟังก์ชั่น?
ในสถานที่ที่ฉันทำงานมีแนวทางที่ชัดเจนสำหรับการวางประกาศของตัวแปร ตามนั้นจำเป็นต้องวางไว้ในระดับโลกและ / หรือที่จุดเริ่มต้นของฟังก์ชั่นและไม่ได้อยู่ในบล็อกด้านใน (เช่นสำหรับวง) เนื่องจากบุคคลเหล่านี้ถูกระบุว่ามีประสบการณ์มากกว่าฉันฉันแน่ใจว่าต้องมีเหตุผลที่ดีสำหรับสิ่งนี้ แต่ฉันไม่สามารถเข้าใจได้ว่าอะไรจะเกิดขึ้น มันจะเป็นการดีถ้ารู้ว่ามีข้อได้เปรียบเวลารวบรวม / เวลารันที่มีการประกาศในขอบเขตที่ใหญ่กว่า
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.