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

9
C ทัวริงสมบูรณ์จริงหรือ
ฉันพยายามอธิบายให้คนที่ C เข้าใจว่าทัวริงสมบูรณ์และรู้ว่าจริง ๆ แล้วฉันไม่รู้ว่ามันเป็นเทคนิคทัวริงสมบูรณ์หรือไม่ (C เช่นเดียวกับในความหมายที่เป็นนามธรรมไม่เหมือนกับการใช้งานจริง) คำตอบ "ชัดเจน" (คร่าวๆ: มันสามารถระบุจำนวนหน่วยความจำโดยพลการเพื่อให้สามารถเลียนแบบเครื่องแรมดังนั้นจึงเป็นทัวริงสมบูรณ์) ไม่ถูกต้องจริงเท่าที่ฉันสามารถบอกได้แม้ว่ามาตรฐาน C อนุญาต สำหรับ size_t ที่จะมีขนาดใหญ่โดยพลการนั้นจะต้องได้รับการแก้ไขในบางความยาวและไม่ว่าจะมีการแก้ไขความยาวเท่าใดที่มันยังคง จำกัด (กล่าวอีกนัยหนึ่งถึงแม้ว่าคุณจะได้รับเครื่องทัวริงหยุดโดยพลการเลือกขนาด size_t ซึ่งมันจะทำงาน "ถูกต้อง" แต่ก็ไม่มีทางเลือกขนาด size_t ซึ่งเครื่องทัวริงทัวริงทั้งหมดจะทำงานอย่างถูกต้อง) ดังนั้น: C99 ทัวริงเสร็จสมบูรณ์?

2
เหตุใด C ประเภทโมฆะจึงไม่คล้ายกับประเภทที่ว่าง / ด้านล่าง
Wikipedia ตลอดจนแหล่งข้อมูลอื่น ๆ ที่ฉันได้พบรายการvoidประเภทC เป็นหน่วยประเภทซึ่งตรงข้ามกับประเภทที่ว่างเปล่า ฉันพบว่ามันสับสนเพราะฉันคิดว่าvoidเหมาะกับนิยามของประเภทที่ว่าง / ล่าง ไม่มีค่านิยมใด ๆ อยู่voidเท่าที่ฉันจะบอกได้ ฟังก์ชั่นที่มีประเภทคืนค่าเป็นโมฆะระบุว่าฟังก์ชั่นจะไม่ส่งคืนสิ่งใดดังนั้นจึงสามารถทำงานได้เพียงผลข้างเคียงเท่านั้น ตัวชี้ชนิดvoid*เป็นชนิดย่อยของชนิดตัวชี้อื่นทั้งหมด นอกจากนี้การแปลงไปยังและจากvoid*ใน C นั้นเป็นนัย ผมไม่แน่ใจว่าถ้าจุดสุดท้ายมีบุญใด ๆ ที่เป็นข้อโต้แย้งสำหรับvoidการเป็นประเภทที่ว่างเปล่าเป็นมากหรือน้อยเป็นกรณีพิเศษที่มีความสัมพันธ์ไม่มากที่จะvoid*void ในทางกลับกันvoidตัวมันเองไม่ใช่ประเภทย่อยของประเภทอื่นทั้งหมดซึ่งเท่าที่ฉันสามารถบอกได้ว่าเป็นข้อกำหนดสำหรับประเภทที่จะเป็นประเภทด้านล่าง
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

7
ทำไมดัชนีอาเรย์เชิงลบจึงสมเหตุสมผล
ฉันเจอประสบการณ์แปลก ๆ ในการเขียนโปรแกรม C พิจารณารหัสนี้: int main(){ int array1[6] = {0, 1, 2, 3, 4, 5}; int array2[6] = {6, 7, 8, 9, 10, 11}; printf("%d\n", array1[-1]); return 0; } เมื่อฉันรวบรวมและเรียกใช้สิ่งนี้ฉันจะไม่ได้รับข้อผิดพลาดหรือคำเตือนใด ๆ ดังที่วิทยากรของฉันกล่าวว่าดัชนีอาร์เรย์-1เข้าถึงตัวแปรอื่น ฉันยังสับสนอยู่ทำไมภาษาโปรแกรมโลกถึงมีความสามารถนี้ ฉันหมายความว่าทำไมอนุญาตให้ดัชนีอาเรย์เชิงลบ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.