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

5
มันสมเหตุสมผลไหมที่จะใช้อ็อบเจกต์ (แทนที่จะเป็นชนิดดั้งเดิม) สำหรับทุกสิ่งใน C ++?
ในช่วงโปรเจ็กต์ล่าสุดที่ฉันทำงานอยู่ฉันต้องใช้ฟังก์ชั่นมากมายเช่นนี้: static bool getGPS(double plane_latitude, double plane_longitude, double plane_altitude, double plane_roll, double plane_pitch, double plane_heading, double gimbal_roll, double gimbal_pitch, double gimbal_yaw, int target_x, int target_y, double zoom, int image_width_pixels, int image_height_pixels, double & Target_Latitude, double & Target_Longitude, double & Target_Height); ดังนั้นฉันต้องการ refactor เพื่อให้มีลักษณะเช่นนี้: static GPSCoordinate getGPS(GPSCoordinate plane, Angle3D planeAngle, Angle3D …

4
ทำไมสั้น, int และคิดค้นมานานใน C?
ฉันมีปัญหาในการทำความเข้าใจสิ่งที่เป็นวัตถุประสงค์ที่แน่นอนของการสร้างshort, intและlongชนิดข้อมูลใน C? เหตุผลที่ผมถามคือมันไม่ได้ดูเหมือนขนาดของพวกเขาจะกระโดด - พวกเขาอาจจะมีขนาดใดตราบใดที่shortมีขนาดเล็กกว่าintเช่น ในสถานการณ์ใดที่คุณควรใช้unsigned intหรือunsigned longตัวอย่างเช่น a แทนsize_tเมื่อคุณทำเช่นนั้นจะไม่มีความหวังของความเข้ากันได้ของไบนารี? (หากคุณไม่ทราบขนาดคุณจะรู้ได้อย่างไรว่าจะเลือกขนาดไหน)
16 c  data-types 

2
การใช้ข้อมูลประเภทพีชคณิตคืออะไร
ฉันกำลังอ่านเกี่ยวกับประเภทข้อมูลพีชคณิต (ขอบคุณ Richard Minerich ฉันพบคำอธิบายที่ยอดเยี่ยมเกี่ยวกับแนวคิดนี้) ในขณะที่ฉันคิดว่าฉันเข้าใจความคิดประเภทผลรวมและประเภทผลิตภัณฑ์ ฯลฯ สิ่งที่ฉันไม่เข้าใจค่อนข้างมากคือวิธีที่ Algebraic Data Types นั้นมีประโยชน์นอกเหนือจากการระบุการจับคู่รูปแบบ สิ่งอื่น ๆ ที่เราสามารถทำได้ด้วยการจับคู่รูปแบบที่นอกเหนือจาก ADT แก้ไข: ฉันไม่ได้ถามว่านักพัฒนาสามารถทำอะไรกับ ADT ที่ไม่สามารถทำได้กับวัตถุ ฉันกำลังถามว่ามีการดำเนินงานอื่น ๆ ที่ ADT อนุญาตหรือไม่ ตัวอย่างเช่นเราสามารถให้เหตุผลเพิ่มเติมเกี่ยวกับประเภทที่เกี่ยวข้องหากใช้ ADT หรือไม่ ADT อำนวยความสะดวกในการวิเคราะห์ประเภทบางประเภทที่ไม่สามารถทำได้หรือไม่

16
แนวคิดเบื้องหลังการกำหนดสี่เหลี่ยมสองจุดคืออะไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ไม่ใช่ว่ามันไม่เข้าท่า แต่มันก็ใช้งานได้อย่างน่าอึดอัดใจ 99% ของเวลา บ่อยครั้งในสี่เหลี่ยมกราฟิกสองมิติจะเริ่มต้นจัดเก็บและจัดการเป็นจุดคู่ ในภาษาใดไม่มี class Rect: p1, p2: point มันสมเหตุสมผลกว่าที่จะกำหนดรูปสี่เหลี่ยมผืนผ้าเป็นค่า x สองค่าและค่า y สองค่าดังนี้: class Rect xleft, xright: int ytop, ybottom: int ด้วยจุดสองจุดหากบางจุดในซอร์สโค้ดคุณต้องการใช้ประโยชน์จากค่า y ของอันดับต้นสุดคุณต้องบอกว่า rect.p1.y (hmmm หยุดและคิดว่ามันคือ p1 หรือ p2) แต่ ด้วยค่าสี่ค่าในฐานะสมาชิกข้อมูลธรรมดามันชัดเจนและตรงไปตรงมา: rect.ytop (ไม่ต้องคิด!) การใช้สองจุดหมายความว่าในการจัดการกับแนวตั้งคุณต้องยุ่งเหยิงในแนวนอน มีความสัมพันธ์ภายนอกระหว่างองค์ประกอบอิสระ แนวคิดสองจุดนี้เกิดขึ้นได้อย่างไรและทำไมมันถึงยังคงอยู่? มันมีประโยชน์มากกว่าพิกัด x และ …

2
คำศัพท์ที่ถูกต้องในทฤษฎีประเภท: ประเภทประเภทก่อสร้างประเภท / ประเภทและค่า
ในคำตอบของคำถามก่อนหน้านี้การอภิปรายขนาดเล็กเริ่มต้นขึ้นเกี่ยวกับคำศัพท์ที่ถูกต้องสำหรับโครงสร้างบางอย่าง ขณะที่ฉันไม่พบคำถาม (นอกเหนือจากนี้หรือว่าซึ่งไม่ใช่สิ่งที่ถูกต้อง) ที่จะตอบคำถามนี้อย่างชัดเจนฉันกำลังสร้างคำถามใหม่ ข้อตกลงที่น่าสงสัยและความสัมพันธ์ของพวกเขาคือชนิดประเภทคอนสตรัคชนิดพารามิเตอร์ชนิดหรือประเภทและค่านิยม ฉันได้ตรวจสอบวิกิพีเดียเพื่อศึกษาทฤษฎีการพิมพ์ด้วย แต่ก็ไม่ได้อธิบายอย่างชัดเจนเช่นกัน ดังนั้นเพื่อให้มีคำตอบอ้างอิงที่ดีและตรวจสอบความเข้าใจของฉัน: สิ่งเหล่านี้ถูกกำหนดไว้อย่างเหมาะสมอย่างไร? ความแตกต่างระหว่างสิ่งเหล่านี้คืออะไร? พวกเขาเกี่ยวข้องกันอย่างไร

4
เกี่ยวกับวันที่ของฐานข้อมูลประเภท crusade: ถูกต้อง? คุ้มค่า? มีใครรู้สึกบ้างไหม?
ฉันใช้เวลามากในการตอบคำถาม SQL ผ่านทาง SO ฉันเจอคำถามของตระกูลนี้บ่อยครั้ง: SELECT * FROM person WHERE birthdate BETWEEN '01/01/2017' AND '01/03/2017' SELECT * FROM person WHERE birthdate BETWEEN '2017-01-01' AND '2017-03-01' SELECT * FROM person WHERE birthdate BETWEEN 'some string' AND 'other string' เช่นอาศัยการแปลงโดยนัยจากสตริงถึงวันที่ (ไม่ดี) ของพารามิเตอร์ที่กำหนดหรืออาศัยฐานข้อมูลที่แปลงค่า x ล้านแถวของฐานข้อมูลเป็นสตริงและทำการเปรียบเทียบสตริง (แย่กว่า) ฉันแสดงความคิดเห็นเป็นครั้งคราวโดยเฉพาะอย่างยิ่งถ้าเป็นผู้ใช้ตัวแทนสูงที่เขียนคำตอบสมาร์ท แต่คนที่ฉันรู้สึกว่าควรจะมีความเลอะเทอะน้อยลง / พิมพ์ด้วยชนิดข้อมูลของพวกเขาน้อยลง ความคิดเห็นมักจะใช้แบบฟอร์มที่มันอาจจะดีกว่าถ้าพวกเขาแปลงสตริงเป็นวันที่อย่างชัดเจนโดยใช้ to_date (Oracle), …

6
ประเภทข้อมูลที่ดีที่สุดในการจัดเก็บตัวแปรที่ประกอบไปด้วยหรือตัวแปรสามสถานะ
ข้อจำกัดความรับผิดชอบ: ฉันรู้ว่าประเภทข้อมูลนั้นเป็นอัตนัยเล็กน้อยที่ภาษาสคริปต์ / การเขียนโปรแกรมที่คุณใช้ฉันชอบที่จะเขียนใน Python เป็นเรื่องของการตั้งค่า; แม้ว่าฉันยินดีที่จะได้ยินเกี่ยวกับ lanugage / การใช้งาน ประเภทข้อมูลที่ดีที่สุดในการจัดเก็บตัวแปรสามสถานะคืออะไร? บางสิ่งบางอย่างที่มีความสามารถหรือเป็นตัวแทนของเชิงบวกที่เป็นกลางและเชิงลบ ตัวอย่าง: นัมเบอร์-1, ,01 Pro: รัดกุมมาก Pro: อาจมีประสิทธิภาพ, สามารถเก็บเป็นจำนวนเต็ม 2 บิตที่เซ็นชื่อได้ Pro: สามารถใช้เป็นเครื่องชั่งได้เช่นตัวคูณจุดลอยตัว ตัวอย่างที่ 2: 0, null, 1(หรือการเปลี่ยนแปลงใด ๆ ) Pro: กรณีการใช้ที่ไม่เป็นกลางสามารถเป็นแบบไบนารี คอนดิชั่น: ต้องใช้ประเภทข้อมูลแบบไดนามิก คอนดิชั่น: อาจไม่รัดกุม ตัวอย่างที่ 3: +, (สตริงว่าง)- Pro: รัดกุมมาก คอนดิชั่น: อาจใช้ตรรกะสตริงเพื่อกำหนดสถานะ Pro: การแสดงกราฟิกที่ใช้งานง่าย อาจมีตรรกะเลขฐานสองที่ฉลาดที่สามารถทำสิ่งที่ฉลาดที่ฉันไม่สามารถจินตนาการได้บางทีอาจจะต้องอาศัยการพิจารณากรณีการใช้มากเกินไป นอกจากนี้ยังมีข้อควรพิจารณาในการปรับเปลี่ยนสถานะส่วนที่สามเพื่อจัดเก็บในเอ็นจินฐานข้อมูล เช่นเดียวกับ …

1
ทำส่วนขยาย C เด่นใด ๆ รวมถึงประเภทจำนวนเต็มซึ่งพฤติกรรมไม่ขึ้นอยู่กับขนาดของเครื่องคำ
คุณลักษณะที่น่าสนใจของ C เมื่อเทียบกับภาษาอื่น ๆ คือประเภทข้อมูลจำนวนมากนั้นขึ้นอยู่กับขนาดของคำของสถาปัตยกรรมเป้าหมายแทนที่จะถูกระบุในเงื่อนไขแบบสัมบูรณ์ แม้ว่าสิ่งนี้จะช่วยให้ภาษาสามารถใช้ในการเขียนโค้ดบนเครื่องที่อาจมีปัญหากับบางประเภท แต่ก็เป็นการยากที่จะออกแบบรหัสซึ่งจะทำงานอย่างต่อเนื่องในสถาปัตยกรรมที่แตกต่างกัน พิจารณารหัส: uint16_t ffff16 = 0xFFFF; int64_t who_knows = ffff16 * ffff16; ในสถาปัตยกรรมที่intมี 16 บิต (ยังคงเป็นจริงของไมโครคอนโทรลเลอร์ขนาดเล็กจำนวนมาก) รหัสนี้จะกำหนดค่า 1 โดยใช้พฤติกรรมที่กำหนดไว้อย่างดี บนเครื่องที่intมี 64 บิตก็จะกำหนดค่า 4294836225 อีกครั้งโดยใช้พฤติกรรมที่กำหนดไว้อย่างดี บนเครื่องที่intมี 32 บิตก็น่าจะกำหนดค่า -131071 (ฉันไม่ทราบว่าจะเป็นพฤติกรรมการใช้งานที่กำหนดหรือไม่ได้กำหนด) แม้ว่าโค้ดจะไม่ใช้สิ่งใดนอกจากสิ่งที่ควรจะเป็นในนาม "ประเภทขนาดคงที่" มาตรฐานจะกำหนดให้คอมไพเลอร์สองแบบที่ใช้กันในวันนี้จะให้ผลลัพธ์ที่แตกต่างกันสองแบบและคอมไพเลอร์ยอดนิยมจำนวนมากในปัจจุบัน ตัวอย่างนี้เป็นการประดิษฐ์ที่ฉันไม่คาดหวังในรหัสโลกแห่งความจริงเพื่อกำหนดผลิตภัณฑ์ของค่า 16 บิตสองค่าโดยตรงกับค่า 64- บิต แต่มันถูกเลือกเป็นตัวอย่างสั้น ๆ เพื่อแสดงจำนวนเต็มสามวิธี การส่งเสริมการขายอาจโต้ตอบกับประเภทที่ไม่ได้ลงชื่อขนาดคงที่ มีสถานการณ์ในโลกจริงบางอย่างที่จำเป็นสำหรับการคำนวณทางคณิตศาสตร์ในประเภทที่ไม่ได้ลงนามตามกฎของเลขคณิตเลขจำนวนเต็มทางคณิตศาสตร์อื่น ๆ ที่จำเป็นที่จะต้องดำเนินการตามกฎของเลขคณิตแบบแยกส่วนและบางอย่างที่มันไม่จริง …

1
อะไรคือสัญชาติญาณที่สนับสนุนการเรียกตัวสร้างบางทีใน Haskell“ Just”?
สัญชาตญาณของประเภทที่เป็นตัวเลือกเช่นเดียวกับMaybe Intที่ไม่มี Int (เช่นนั้นNothingมี) หรือว่ามีInt บางตัว มีบางสิ่งที่นั่น มันทำให้ฉันรู้สึกว่าเราเรียก constructor ชนิดสำหรับ "เชิงลบ" กรณีNothingเพราะมันหมายความว่าที่ - ว่าไม่มีIntมี แต่ใช้คำว่าทำไมเพียงแค่ในกรณีที่เน้นอยู่ในสิ่งที่เป็นจริงมี ? สำหรับฉันคำว่า "เพิ่ง" มีความหมายแฝงอยู่ว่าสิ่งที่อธิบายนั้นน้อยกว่าทางเลือก ตรงกันข้ามกับสิ่งที่อยู่ที่นั่นจริง ๆ ; ตัวอย่างเช่น, ตอบ: คุณกำลังทำอะไรคืนนี้ B: ไม่; ฉันแค่จะอยู่ในและดูทีวี ตอบ: คุณตรวจสอบเสียงผีที่น่าขนลุกรอบ ๆ บ้านของคุณหรือไม่? B: ใช่ปรากฎว่ามันเป็นแค่นกฮูก เห็นได้ชัดว่าฉันขาดสัญชาตญาณสิ่งที่ตัวเลือกการตั้งชื่อนี้มีพื้นฐานมาจาก มันคืออะไร? เพราะให้ฉันคำเพียงหมายถึงตรงข้ามของวิธีการที่จะนำมาใช้ในที่Maybeประเภท

3
ใช้อินเทอร์เฟซสำหรับประเภทข้อมูลเป็นแบบป้องกันหรือไม่
สมมติว่าฉันมีเอนทิตีต่าง ๆ ในแบบจำลองของฉัน (โดยใช้ EF), พูดว่าผู้ใช้ผลิตภัณฑ์ใบแจ้งหนี้และใบสั่ง ฉันกำลังเขียนตัวควบคุมผู้ใช้ที่สามารถพิมพ์บทสรุปของเอนทิตีวัตถุในแอปพลิเคชันของฉันซึ่งเป็นรายการที่กำหนดไว้ล่วงหน้าในกรณีนี้ฉันบอกว่าสรุปของผู้ใช้และผลิตภัณฑ์สามารถสรุปได้ บทสรุปจะมีเพียง ID และคำอธิบายเท่านั้นดังนั้นฉันจึงสร้างอินเทอร์เฟซอย่างง่ายสำหรับสิ่งนี้: public interface ISummarizableEntity { public string ID { get; } public string Description { get; } } จากนั้นสำหรับเอนทิตีที่มีปัญหาฉันสร้างคลาสบางส่วนที่ใช้อินเทอร์เฟซนี้: public partial class User : ISummarizableEntity { public string ID { get{ return UserID.ToString(); } } public string Description { get{ return …

4
จำนวนเต็มใช้เป็นประเภทข้อมูลมากเกินไปหรือไม่
นักพัฒนาแอปพลิเคชันส่วนใหญ่ใช้จำนวนเต็มที่ลงนามในสถานที่ที่พวกเขาหมายถึงการใช้จำนวนเต็มที่ไม่ได้ลงนามจริง ๆ หรือไม่? ฉันทำมันตลอดเวลาดังนั้นเพื่อนร่วมงานของฉัน ฉันไม่ได้เห็นฐานรหัสอื่น ๆ มากมาย (นอกเหนือจาก Delphi VCL) และตัวอย่างบนอินเทอร์เน็ตมักจะใช้จำนวนเต็ม ในขณะที่ผู้พัฒนา VCL ใช้ประเภทข้อมูลของตัวเอง (ซึ่งเป็นวิธีที่ไม่ขี้เกียจที่สุดในการประกาศตัวแปร) บางอย่างดูน่ากลัวเล็กน้อยเกี่ยวกับรหัสเช่นนี้ TStuffRec = record recordID : Integer; thingID : Integer; otherThingID : Integer; end; เมื่อมันสามารถเขียนเป็น TStuffRec = record recordID : Cardinal; thingID : Cardinal; otherThingID : Cardinal; end; ฟังก์ชั่นบันทึกเหล่านี้มักจะทำงานเหมือนเดิม (และหวังว่าจะยังคงทำงานเหมือนเดิมแม้ใน Delphi 64 บิต) แต่จำนวนมากจะมีปัญหาการแปลง แต่มีข้อเสียคือการใช้ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.