คำถามติดแท็ก data-types

4
คำสั่งห้ามของ `long 'สมเหตุสมผลหรือไม่?
ในปัจจุบันข้ามแพลตฟอร์ม C ++ (หรือ C) โลกเรามี : Data model | short | int | long | long long | pointers/size_t | Sample operating systems ... LLP64/IL32P64 16 32 32 64 64 Microsoft Windows (x86-64 and IA-64) LP64/I32LP64 16 32 64 64 64 Most Unix and Unix-like systems, e.g. Solaris, Linux, …

20
การพิมพ์แบบคงที่คุ้มค่ากับการแลกเปลี่ยนหรือไม่?
ฉันเริ่มเขียนโปรแกรมด้วยภาษา Python เป็นหลักโดยที่ไม่มีความปลอดภัยประเภทจากนั้นย้ายไปที่ C # และ Java ที่มี ฉันพบว่าฉันสามารถทำงานได้เร็วขึ้นและปวดหัวน้อยลงใน Python แต่จากนั้นอีกครั้งแอป C # และ Java ของฉันมีระดับความซับซ้อนที่สูงขึ้นมากดังนั้นฉันจึงไม่เคยให้ Python เป็นการทดสอบความเครียดที่แท้จริง ค่าย Java และ C # ทำให้ดูเหมือนไม่มีความปลอดภัยในสถานที่ที่คนส่วนใหญ่จะทำงานในทุกประเภทของข้อผิดพลาดที่น่ากลัวทิ้งขวาและมันจะมีปัญหามากกว่ามูลค่าของมัน นี่ไม่ใช่การเปรียบเทียบภาษาดังนั้นโปรดอย่าแก้ไขปัญหาเช่นรวบรวมและตีความ ความปลอดภัยของประเภทคุ้มค่าต่อการพัฒนาและความยืดหยุ่นหรือไม่? ทำไม? สำหรับผู้ที่ต้องการตัวอย่างของความคิดเห็นที่การพิมพ์แบบไดนามิกเร็วกว่า: "ใช้ภาษาที่พิมพ์แบบไดนามิกในระหว่างการพัฒนาซึ่งจะช่วยให้คุณได้รับข้อเสนอแนะเวลาตอบสนองและความเร็วในการพัฒนาที่เร็วขึ้น" - http://blog.jayway.com/2010/04/14/static-typing-is-the-root-of-all-evil/

16
ฉันจะเก็บค่า“ ไม่รู้จัก” และ“ หายไป” ในตัวแปรได้อย่างไรในขณะที่ยังคงรักษาความแตกต่างระหว่าง“ ไม่ทราบ” และ“ หายไป”
พิจารณาคำถามนี้เป็น "วิชาการ" ฉันสงสัยเกี่ยวกับการหลีกเลี่ยง NULL เป็นครั้งคราวและนี่เป็นตัวอย่างที่ฉันไม่สามารถหาวิธีแก้ปัญหาที่น่าพอใจได้ สมมติว่าฉันเก็บค่าการวัดซึ่งบางครั้งการวัดนั้นเป็นไปไม่ได้ (หรือหายไป) ฉันต้องการเก็บค่า "ว่างเปล่า" ในตัวแปรในขณะที่หลีกเลี่ยงค่า NULL บางครั้งค่าอาจไม่เป็นที่รู้จัก ดังนั้นการมีการวัดสำหรับกรอบเวลาที่แน่นอนเคียวรีเกี่ยวกับการวัดภายในช่วงเวลานั้นอาจส่งคืนการตอบสนอง 3 ชนิด: การวัดจริงในเวลานั้น (เช่นค่าตัวเลขใด ๆ รวมถึง0) A "หายไป" / "ว่างเปล่า" ค่า (กล่าวคือเป็นวัดที่ได้กระทำและความคุ้มค่าเป็นที่รู้จักกันว่าเป็นที่ว่างเปล่าที่จุดนั้น) ค่าที่ไม่รู้จัก (เช่นไม่มีการวัดที่จุดนั้นอาจว่างเปล่า แต่อาจเป็นค่าอื่นก็ได้) ชี้แจงที่สำคัญ: สมมติว่าคุณมีฟังก์ชันที่get_measurement()ส่งคืนหนึ่งใน "ว่างเปล่า", "ไม่ทราบ" และค่าประเภท "จำนวนเต็ม" การมีค่าตัวเลขแสดงถึงการดำเนินการบางอย่างที่สามารถทำได้ในค่าส่งคืน (การคูณการหาร ... ) แต่การใช้การดำเนินการดังกล่าวกับ NULLs จะทำให้แอปพลิเคชันเสียหายหากไม่ถูกจับ ฉันต้องการที่จะสามารถเขียนรหัสหลีกเลี่ยงการตรวจสอบ NULL เช่น (pseudocode): >>> value = get_measurement() # …

9
ฐานข้อมูลเชิงสัมพันธ์อะไรที่ได้รับจากการตั้งค่าชนิดข้อมูลที่กำหนดไว้ล่วงหน้าสำหรับแต่ละคอลัมน์
ฉันกำลังทำงานกับฐานข้อมูล SQL อยู่ในขณะนี้และสิ่งนี้ทำให้ฉันสงสัยอยู่เสมอ แต่การค้นหาของ Google ไม่ได้เกิดอะไรขึ้น: ทำไมประเภทข้อมูลที่เข้มงวด ฉันเข้าใจว่าทำไมคุณต้องการมีไม่กี่ชนิดข้อมูลที่แตกต่างกันตัวอย่างเช่นวิธีการแตกต่างระหว่างข้อมูลที่เป็นข้อความธรรมดาไบนารีและเป็นสิ่งสำคัญ แทนที่จะเก็บข้อมูลไบนารี 1 และ 0s เป็นข้อความธรรมดาตอนนี้ฉันเข้าใจว่ามันมีประสิทธิภาพมากกว่าในการจัดเก็บข้อมูลไบนารีเป็นรูปแบบของตัวเอง แต่สิ่งที่ฉันไม่เข้าใจคือสิ่งที่ประโยชน์คือการมีประเภทข้อมูลที่แตกต่างกันมากมาย : ทำไมmediumtext, longtextและtext? ทำไมdecimal, floatและint? เป็นต้น ประโยชน์ของการบอกฐานข้อมูลคืออะไร "จะมีเพียง 256 ไบต์ของข้อมูลข้อความธรรมดาในรายการในคอลัมน์นี้" หรือ "คอลัมน์นี้สามารถมีรายการข้อความได้ถึง 16,777,215 ไบต์" มันเป็นผลประโยชน์ด้านประสิทธิภาพหรือไม่? ถ้าใช่ทำไมรู้ขนาดของรายการก่อนมือช่วยประสิทธิภาพ? หรือค่อนข้างเป็นอย่างอื่นทั้งหมด?

5
เหตุใด Java จึงไม่พิมพ์ข้อสรุป
ฉันสงสัยอยู่เสมอว่าทำไม Java ไม่พิมพ์ข้อสรุปเนื่องจากภาษาเป็นสิ่งที่มันเป็นและ VM เป็นผู้ใหญ่มาก Google's Go เป็นตัวอย่างของภาษาที่มีการอนุมานประเภทที่ยอดเยี่ยมและลดจำนวนการพิมพ์ที่ต้องทำ มีเหตุผลพิเศษเบื้องหลังคุณสมบัตินี้หรือไม่ที่ไม่ได้เป็นส่วนหนึ่งของ Java?

5
ตัวแปรใน C ++ เก็บประเภทของพวกเขาอย่างไร
หากฉันกำหนดตัวแปรประเภทหนึ่ง (ซึ่งเท่าที่ฉันรู้เพียงแค่จัดสรรข้อมูลสำหรับเนื้อหาของตัวแปร) มันจะติดตามชนิดของตัวแปรชนิดใดได้อย่างไร

8
ชนิดข้อมูลดั้งเดิมมีความหมายอย่างไร
ความเข้าใจของฉันเกี่ยวกับประเภทข้อมูลดั้งเดิมคือ มันเป็นประเภทข้อมูลที่จัดทำโดยภาษาโดยนัย (อื่น ๆ เป็นชั้นเรียนที่ผู้ใช้กำหนด) ภาษาที่ต่างกันจึงมีชุดข้อมูลที่แตกต่างกันซึ่งถือว่าเป็นภาษาดั้งเดิมสำหรับภาษานั้น นั่นถูกต้องใช่ไหม? และอะไรคือความแตกต่างระหว่าง "ประเภทข้อมูลพื้นฐาน" และ "ประเภทข้อมูลในตัว" Wikipedia กล่าวว่าประเภทข้อมูลดั้งเดิมเป็นหนึ่งในสองชนิดนี้ PS - ทำไมประเภท "string" จึงถูกพิจารณาว่าเป็นประเภทพื้นฐานใน SNOBOL4 และไม่ใช่ใน Java?
42 data-types 

6
การกำหนดประเภทข้อมูลตัวแปรอย่างชัดเจนเมื่อเทียบกับการใช้คำหลัก 'var' [ปิด]
ใน C # ฉันขอแนะนำให้ใช้คำหลัก var all-purpose สำหรับการประกาศตัวแปรทั้งหมดหรือไม่ ถ้าใช่ฉันต้องพูดถึงอักขระพิเศษเหล่านั้นสำหรับค่าตัวอักษรภายในการประกาศตัวแปรเช่น M สำหรับทศนิยมในคำสั่งต่อไปนี้: var myDecimal = 14.5M; ถ้ามันสร้างความแตกต่างฉันพยายามที่จะพัฒนาเว็บไซต์ด้วย C #

14
มีเหตุผลที่จะใช้อาร์เรย์เมื่อรายการพร้อมใช้งานหรือไม่? [ปิด]
ดูเหมือนว่าList<T>ใน C # สามารถทำทุกอย่างที่อาเรย์สามารถทำได้และอื่น ๆ อีกมากมายและดูเหมือนว่าในหน่วยความจำและประสิทธิภาพก็มีประสิทธิภาพเช่นเดียวกับอาเรย์ เหตุใดฉันจึงต้องการใช้อาร์เรย์ เห็นได้ชัดว่าฉันไม่ได้ถามเกี่ยวกับกรณีที่ API หรือข้อ จำกัด ภายนอกอื่น ๆ (เช่นฟังก์ชั่นหลัก) ต้องการให้ฉันใช้อาร์เรย์ ... ฉันแค่ถามเกี่ยวกับการสร้างโครงสร้างข้อมูลใหม่ในรหัสของฉันเอง
30 c#  data-types 

8
ใช้สตริงว่างเป็นโมฆะหรือลบคุณสมบัติว่างในคำขอ API / ตอบกลับ
เมื่อถ่ายโอนออบเจ็กต์ผ่าน API เช่นเดียวกับในรูปแบบ schemaless JSON วิธีที่เหมาะสมที่สุดในการส่งคืนคุณสมบัติสตริงที่ไม่มีอยู่คืออะไร? ฉันรู้ว่ามีหลายวิธีในการทำเช่นนี้ในตัวอย่างในลิงค์ด้านล่าง หลีกเลี่ยงการเป็นโมฆะ ส่งคืน null ลบคุณสมบัติที่ว่างเปล่า ฉันแน่ใจว่าฉันเคยใช้เป็นโมฆะในอดีต แต่ไม่มีเหตุผลที่ดีที่จะทำเช่นนั้น ดูเหมือนว่าจะใช้ null ทันทีเมื่อจัดการกับฐานข้อมูล แต่ฐานข้อมูลดูเหมือนว่ารายละเอียดการใช้งานที่ไม่ควรเกี่ยวข้องกับฝ่ายที่อยู่อีกด้านหนึ่งของ API เช่นพวกเขาอาจใช้ที่เก็บข้อมูลสกีมาที่เก็บเฉพาะคุณสมบัติที่มีค่า (ไม่ใช่ค่า Null) จากมุมมองของรหัสการ จำกัด ฟังก์ชั่นสตริงให้ใช้งานได้กับประเภทเดียวเท่านั้นคือstring(ไม่ใช่ null) ทำให้ง่ายต่อการพิสูจน์ หลีกเลี่ยงโมฆะก็เป็นสาเหตุของการมีOptionวัตถุ ดังนั้นหากรหัสที่สร้างคำขอ / ตอบสนองไม่ได้ใช้ค่า null ฉันเดาว่าเป็นรหัสที่อีกด้านหนึ่งของ API จะไม่ถูกบังคับให้ใช้ค่า null เช่นกัน ฉันชอบความคิดที่จะใช้สตริงว่างเปล่าเป็นวิธีง่ายๆในการหลีกเลี่ยงการใช้ null อาร์กิวเมนต์หนึ่งที่ฉันได้ยินว่าใช้ null และเทียบกับสตริงว่างคือสตริงว่างหมายความว่ามีคุณสมบัติอยู่ แม้ว่าฉันจะเข้าใจความแตกต่างฉันยังสงสัยว่ามันเป็นเพียงรายละเอียดการใช้งานและถ้าใช้สตริงว่างหรือว่างเปล่าทำให้เกิดความแตกต่างในชีวิตจริง ฉันยังสงสัยว่าสตริงว่างนั้นคล้ายคลึงกับอาร์เรย์ว่างหรือไม่ ดังนั้นวิธีไหนที่ดีที่สุดในการทำสิ่งเหล่านี้ มันขึ้นอยู่กับรูปแบบของวัตถุที่ถูกถ่ายโอน (schema / schemaless) หรือไม่?

9
เหตุใดจึงไม่มีประเภทข้อมูล "วันที่เท่านั้น" ที่แท้จริง
ฉันผิดหวังอย่างมากที่ต้องใช้ค่า DateTime สำหรับชุดข้อมูลที่ "แค่วันเดียว" อย่างแท้จริง วันเกิดเป็นตัวอย่างที่พบบ่อยที่สุด แต่สิ่งนี้เกิดขึ้นในแอปพลิเคชันทางธุรกิจตลอดเวลา ฉันคุ้นเคยกับการตั้งค่าส่วนเวลาของระเบียน "วันที่เท่านั้น" เป็น "เที่ยง" (ซึ่งจะหลีกเลี่ยงวันที่ที่เปลี่ยนแปลงตลอดเวลาไม่ว่าจะเป็นเขตเวลา) ดูเหมือนว่าแฮ็คและฉันจะหาบั๊กจากผู้พัฒนาอุปกรณ์ตัวจริงตลอดไปในเรื่องนี้ เวลาสัมพันธ์กับจุดคงที่เสมอ 4PM คือ 4 ชั่วโมงหลังเที่ยงหรือเที่ยง จุดที่สูงที่สุดของดวงอาทิตย์ในการเดินทางผ่านนั้นสามารถสังเกตได้และช่วยให้เราสามารถตั้งค่าระบบพิกัดได้ 3 ชั่วโมงก่อนเที่ยง (Ante Meridian) 2 ชั่วโมงหลังเที่ยง 1441899402938 มิลลิวินาทีนับตั้งแต่ 1 มกราคม 2513 สำหรับผู้ที่เลี้ยงในโลกคาร์ทีเซียนนี่เป็นลักษณะที่สอง แต่ปฏิทินของเราถือกำเนิด Descartes ข้อโต้แย้งของฉันคือมันเป็นความคิดที่ถูกต้องมากขึ้นว่าเป็นการนับที่ฟังก์ชันโมดูโลถูกนำไปใช้ วันจันทร์ตามวันอาทิตย์และต่อ ๆ ไปจนกว่าคุณจะได้รับความจริงที่ว่าวันอาทิตย์เป็นวันเสาร์ ไม่มีบวกและลบมันเป็นโมดูลัสหรือค่าสัมบูรณ์ ในทำนองเดียวกันกับปีซ้ำ ทุก ๆ 365 วัน (หรือมากกว่านั้น) มีวันพิเศษหลายอย่างสำหรับฉัน: วันเกิดวันครบรอบวันเกิดของเด็ก ฯลฯ ฯลฯ แอปพลิเคชันการตั้งเวลาทางธุรกิจนั้นเต็มไปด้วยตัวอย่างของการประชุมทุกเจ็ดวันอังคารแรกของเดือน ฯลฯ …

3
สิ่งที่ควรเป็นประเภทข้อมูลของโทเค็นที่ lexer กลับไปที่ parser ของมัน?
ตามที่ระบุไว้ในชื่อแล้วข้อมูลชนิดใดที่ lexer ส่งคืน / ให้ parser? เมื่ออ่านบทความวิเคราะห์คำศัพท์ที่ Wikipedia มีระบุว่า: ในวิทยาการคอมพิวเตอร์การวิเคราะห์คำศัพท์เป็นกระบวนการของการแปลงลำดับของตัวละคร (เช่นในโปรแกรมคอมพิวเตอร์หรือหน้าเว็บ) เป็นลำดับโทเค็น ( สตริงที่มีการระบุ "ความหมาย") อย่างไรก็ตามในความขัดแย้งที่สมบูรณ์ให้กับคำสั่งดังกล่าวเมื่อคำถามอื่นผมถามในเว็บไซต์ที่แตกต่างกัน ( รหัสการตรวจทานถ้าคุณอยากรู้) ได้รับการตอบคนตอบระบุไว้ว่า: lexer มักจะอ่านสตริงและแปลงเป็นกระแส ... ของ lexemes คำศัพท์จะต้องเป็นตัวเลขของสตรีมเท่านั้น และเขาให้ภาพนี้: nl_output => 256 output => 257 <string> => 258 ต่อมาในบทความเขากล่าวถึงFlexเล็กซ์ที่มีอยู่แล้วและกล่าวว่าการเขียน 'กฎ' กับมันจะง่ายกว่าการเขียนเล็กซ์เซอร์ด้วยมือ เขาดำเนินการให้ฉันตัวอย่างนี้: Space [ \r\n\t] QuotedString "[^"]*" %% nl_output {return 256;} output {return …
21 data-types  lexer  flex 

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

7
เหตุใด Java จึงมีพื้นฐานสำหรับตัวเลขขนาดแตกต่างกัน
ใน Java มีชนิดดั้งเดิมสำหรับbyte, short, intและlongและสิ่งเดียวกันและfloat doubleเหตุใดจึงจำเป็นต้องให้บุคคลตั้งค่าจำนวนไบต์ที่ควรใช้สำหรับค่าดั้งเดิม ไม่สามารถกำหนดขนาดแบบไดนามิกได้ขึ้นอยู่กับว่าจำนวนที่ส่งผ่านนั้นใหญ่แค่ไหน มี 2 ​​เหตุผลที่ฉันนึกถึง: การตั้งค่าขนาดของข้อมูลแบบไดนามิกหมายความว่ามันจะต้องสามารถเปลี่ยนแบบไดนามิกได้เช่นกัน สิ่งนี้อาจทำให้เกิดปัญหาประสิทธิภาพหรือไม่ บางทีโปรแกรมเมอร์อาจไม่ต้องการให้ใครบางคนสามารถใช้ตัวเลขที่ใหญ่กว่าขนาดที่กำหนดและช่วยให้พวกเขา จำกัด มันได้ ฉันยังคงคิดว่าจะได้รับประโยชน์มากมายจากการใช้งานแบบเดี่ยวintและfloatแบบเรียบง่ายมีเหตุผลบางประการที่ Java ตัดสินใจไม่ให้ไปเส้นทางนี้หรือไม่?

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

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