[Powered by Google Translate] JORDAN JOZWIAK Loại đúc, theo nghĩa đơn giản nhất, là một cách để làm thay đổi giải thích của một số dữ liệu của máy tính bằng cách ngầm hay rõ ràng thay đổi kiểu dữ liệu của nó. Chẳng hạn như thay đổi một int float, hoặc ngược lại. Để hiểu đúc loại, chúng ta cần bắt đầu với những điều cơ bản - kiểu dữ liệu bản thân mình. Trong các ngôn ngữ máy tính như C, tất cả các biến có một số loại các kiểu dữ liệu để xác định cách mà máy tính, và tương tự người sử dụng, diễn giải biến đó. Kiểu dữ liệu số như float, int, lâu dài và đôi, tất cả đều có đặc điểm riêng biệt và được sử dụng để xác định giá trị của các phạm vi và độ chính xác khác nhau. Loại đúc cho phép chúng tôi để có một số điểm nổi như 3,14 và nhận được một phần trước khi thập phân, 3 trong trường hợp này, bằng cách đúc nó đến một int. Hãy lấy một ví dụ từ ngôn ngữ tiếng Anh cho ngắn gọn xem xét các loại, và để xem loại đúc như thế nào có thể thay đổi cách chúng ta hiểu một phần dữ liệu. Đối với dữ liệu, chúng ta hãy xem các biểu tượng ở đây. Tôi chỉ đề cập đến những dòng này cấu hình như biểu tượng, nhưng là những người biết tiếng Anh, bạn ngay lập tức nhận ra rằng họ là, trên thực tế, thư từ. Bạn mặc nhiên hiểu rằng kiểu dữ liệu. Nhìn vào chuỗi kí tự này, chúng ta có thể thấy hai Nói cách khác nhau, đều có ý nghĩa riêng của nó. Có danh từ, gió, như gió thổi bên ngoài. Và có động từ, gió, như trong tôi cần phải gió đồng hồ tương tự của tôi. Đây là một ví dụ thú vị, bởi vì chúng ta có thể thấy làm thế nào các loại mà chúng ta gán cho dữ liệu của chúng tôi, cho dù danh từ hoặc động từ, thay đổi cách chúng tôi sử dụng dữ liệu như gió từ hoặc gió. Mặc dù một máy tính không quan tâm về ngữ pháp và các bộ phận ngôn luận tiếng Anh, cùng một nguyên tắc cơ bản được áp dụng. Đó là, chúng ta có thể thay đổi việc giải thích chính xác cùng một dữ liệu được lưu trữ trong bộ nhớ của chỉ đơn giản là đúc nó vào một kiểu khác nhau. Dưới đây là các kích thước của các loại phổ biến nhất trên 32-bit hệ điều hành. Chúng tôi có một char tại 1 int, byte và float 4 byte, một thời gian dài dài và đôi lúc 8 byte. Bởi vì một int chiếm 4 byte, nó sẽ mất 32 bit khi nó được lưu trữ trong bộ nhớ như là một chuỗi nhị phân số không và những người thân. Như là một biến của chúng tôi vẫn còn là một kiểu int, máy tính sẽ luôn luôn chuyển đổi những những người thân và số không nhị phân thành số lượng ban đầu. Tuy nhiên, chúng tôi về mặt lý thuyết có thể cast những 32 bit vào một loạt các loại Boolean. Và sau đó máy tính sẽ không còn thấy một số, nhưng thay vào đó là một bộ sưu tập các số không và những người thân. Chúng tôi cũng có thể thử để đọc dữ liệu như một số khác nhau đánh máy, hoặc thậm chí như là một chuỗi của bốn nhân vật. Khi giao dịch với số đúc, bạn phải xem xét làm thế nào độ chính xác của giá trị của bạn sẽ bị ảnh hưởng. Hãy nhớ rằng độ chính xác có thể ở cùng, hoặc bạn có thể mất độ chính xác, nhưng bạn không bao giờ có thể đạt được độ chính xác. Hãy đi qua ba cách phổ biến nhất mà bạn có thể mất độ chính xác. Đúc một phao để int sẽ gây ra cắt đứt tất cả mọi thứ sau khi các điểm thập phân, do đó, bạn đang trái với các số nguyên. Nếu chúng ta lấy x float sẽ bằng 3,7, chúng ta có thể bỏ biến x này đến một int chỉ đơn giản bằng cách viết int trong dấu ngoặc đơn. Bất cứ khi nào chúng tôi sử dụng thuật ngữ này ngay tại đây, chúng tôi sẽ có hiệu quả được sử dụng giá trị bởi vì chúng tôi đã cắt ngắn tất cả mọi thứ sau dấu thập phân. Chúng tôi cũng có thể chuyển đổi một lâu dài đến một int, mà sẽ tương tự như vậy dẫn đến mất trật tự-bit. Dài chiếm 8 byte, hoặc 64 bit trong bộ nhớ. Vì vậy, khi chúng tôi bỏ nó vào một int mà chỉ có 4 byte, hoặc 32 bit, chúng ta cơ bản là cắt bỏ tất cả các bit đại diện cho các giá trị nhị phân cao hơn. Bạn cũng có thể đúc một đôi float, mà sẽ cung cấp bạn nổi gần nhất có thể gấp đôi mà không cần nhất thiết phải làm tròn nó. Tương tự như lâu dài của chúng tôi để chuyển đổi int, sự mất mát chính xác là bởi vì một đôi chứa nhiều dữ liệu hơn. Một đôi sẽ cho phép bạn lưu trữ 53 bit có ý nghĩa, khoảng 16 chữ số đáng kể. Trong khi đó, một phao sẽ chỉ cho phép bạn lưu trữ 24 bit đáng kể, khoảng bảy chữ số đáng kể. Trong hai trường hợp, nó có thể hữu ích để suy nghĩ của loại đúc như thay đổi kích thước ảnh. Khi bạn đi từ một kích thước lớn đến một kích thước nhỏ, bạn không thể nhìn thấy những thứ như là rõ ràng bởi vì bạn bị mất dữ liệu trong các hình thức của các điểm ảnh. Loại đúc cũng có thể gây rắc rối khi chúng tôi đúc ints để nổi. Kể từ khi nổi trên một máy tính 32-bit chỉ có 24 bit có ý nghĩa, họ có thể không chính xác đại diện cho các giá trị hơn 2 sức mạnh của 24, hoặc 16.777.217. Bây giờ hãy nói về đúc ngầm và rõ ràng. Đúc rõ ràng là khi chúng tôi viết trong ngoặc đơn trước khi một tên biến. Ví dụ, trước khi chúng tôi đã viết int trong ngoặc đơn trước của chúng tôi nổi biến x. Bằng cách này, chúng tôi nhận được giá trị int, cắt ngắn giá trị của 3,7 - 3. Đúc Implicit là khi trình biên dịch tự động thay đổi tương tự như các loại để một loại siêu, hoặc thực hiện một số loại khác của đúc mà không yêu cầu người sử dụng để viết bất kỳ mã bổ sung. Ví dụ, khi chúng tôi thêm 5 và 1.1, giá trị của chúng tôi đã có các loại liên kết với chúng. 5 là một int, trong khi đó 1,1 là một phao. Để thêm chúng vào, máy tính phôi 5 vào một phao, trong đó đã có được những điều tương tự như văn bản 5,0 trong đầu tiên diễn ra. Nhưng cách này chúng ta nói float 5, 5,0, cộng với những gì đã một phao, 1,1, và từ đó chúng tôi thực sự có thể thêm các giá trị và có được giá trị 6,1. Implicit đúc cũng cho phép chúng ta gán biến số các loại khác nhau với nhau. Chúng tôi luôn luôn có thể chỉ định một loại ít chính xác vào một chính xác một trong. Ví dụ, nếu chúng ta có x gấp đôi, và y một int - và những điều này có thể có bất kỳ giá trị mà chúng ta đặt chúng vào - chúng ta có thể nói x = y. Bởi vì đôi có độ chính xác hơn một int, vì vậy chúng tôi sẽ không mất bất kỳ thông tin nào. Mặt khác, nó sẽ không nhất thiết phải chính xác để nói y bằng x, bởi vì các đôi có thể có một giá trị lớn hơn các số nguyên. Và do đó, các số nguyên có thể không được có thể giữ tất cả các thông tin được lưu trữ trong gấp đôi. Đúc ngầm cũng được sử dụng trong các toán tử so sánh như lớn hơn, nhỏ hơn, hoặc khai thác sự bình đẳng. Bằng cách này, chúng ta có thể nói nếu 5,1 là lớn hơn 5, và chúng tôi nhận được kết quả đúng. Bởi vì 5 là một int, nhưng nó sẽ được đúc vào một phao để được so sánh với các phao 5.1, chúng tôi muốn nói 5,1 là lớn hơn 5,0. Điều này cũng đúng với nói nếu 2,0 bằng bằng 2. Chúng tôi cũng muốn nhận được thật sự, bởi vì máy tính sẽ bỏ số nguyên 2 nổi và sau đó nói 2,0 bằng bằng 2,0, điều này là đúng. Đừng quên rằng chúng ta cũng có thể cast giữa ints và ký tự, ASCII giá trị. Ký tự cũng cần được giảm xuống để nhị phân, đó là lý do tại sao bạn có thể dễ dàng chuyển đổi giữa các ký tự tương ứng của họ ASCII giá trị. Để tìm hiểu thêm về điều này, hãy kiểm tra video của chúng tôi trên ASCII. Khi bạn phải mất một chút thời gian để suy nghĩ về cách dữ liệu được lưu trữ, nó bắt đầu làm cho rất nhiều ý nghĩa. Nó giống như sự khác biệt giữa gió và gió. Dữ liệu là như nhau, nhưng các loại có thể thay đổi cách chúng tôi giải thích nó. Tên tôi là Jordan Jozwiak này CS50.