Di chuyển đến int C++

Đầu tiên, câu trả lời phụ thuộc vào loại chuyển đổi mong muốn. cắt ngắn hoặc làm tròn. Mặt khác, về cơ bản nó không phụ thuộc vào loại dấu phẩy động mà bạn đang chuyển đổi - nó có thể là

                i = x
0 hoặc
                i = x
1 hoặc thậm chí là
                i = x
2

Đôi khi mọi người nghĩ rằng họ biết rằng giá trị của một biến của biến dấu phẩy động có thể biểu diễn chính xác dưới dạng số nguyên. Bạn có thể tin rằng giá trị của x là 100. 0 và bạn chỉ muốn nó được chuyển đổi thành kiểu int, với giá trị 100. Nhưng bạn không bao giờ nên dựa vào kỳ vọng về một giá trị dấu phẩy động chính xác bằng một số nguyên. Những gì bạn có thể cần trong thực tế là chuyển đổi làm tròn

Chuyển đổi cắt bớt có nghĩa là bất kỳ phần phân số nào cũng bị loại bỏ, do đó e. g. 3. 9 đổi thành 3. Chuyển đổi như vậy là chuyển đổi số thực thành số nguyên mặc định trong C theo nghĩa là nó được áp dụng bất cứ khi nào một giá trị của loại dấu phẩy động (float, double hoặc long double) được chuyển đổi thành loại số nguyên. Có các quy tắc cụ thể mô tả thời điểm chuyển đổi như vậy diễn ra. Ở đây chúng tôi sẽ chỉ nói rằng chuyển đổi xảy ra trong một nhiệm vụ như

                i = x
trong đó i thuộc loại số nguyên và x thuộc loại dấu phẩy động. Tất nhiên, chuyển đổi cũng xảy ra trong các loại ép buộc rõ ràng như ____4Chuyển đổi làm tròn có nghĩa là chúng tôi lấy số nguyên gần nhất với giá trị dấu phẩy động, sao cho e. g. 3. 9 đổi thành 4. Đây thường là những gì mọi người muốn khi họ đặt câu hỏi mà chúng tôi đang giải quyết. Không có công cụ trực tiếp (như toán tử hoặc hàm thư viện) để làm tròn chuyển đổi và nói đúng ra, chuyển đổi làm tròn không phải là chuyển đổi theo cùng nghĩa với những chuyển đổi được xác định trong tiêu chuẩn C

Đối với các giá trị dấu phẩy động dương, cách đơn giản nhất để đạt được chuyển đổi làm tròn là sử dụng biểu thức như

                (long) (x+0.5)
nhưng tốt hơn hết là bạn nên chuẩn bị cho các giá trị âm, ngay cả khi bạn không mong đợi chúng xảy ra. Điều này có nghĩa là người ta nên sử dụng biểu thức điều kiện
x >= 0 ? (long)(x+0.5) : (long)(x-0.5)
Giá trị của biểu thức này là số nguyên gần nhất với giá trị của giá trị dấu phẩy động của x

Tất nhiên người ta có thể viết một macro như

#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
nếu một người cần nhiều chuyển đổi làm tròn hoặc muốn làm cho mã dễ đọc hơn một chút

Lưu ý rằng điều này có nghĩa là giá trị được làm tròn của 1. 5 là 2 và giá trị làm tròn của -1. 5 là -2. Bạn có thể muốn có một số cách xử lý khác cho một giá trị chính xác nằm giữa hai số nguyên. Vấn đề là, tuy nhiên, không phải là rất quan trọng thực tế

Xin lưu ý rằng việc chuyển đổi giá trị dấu phẩy động thành số nguyên có thể gây tràn và hầu hết các triển khai không đưa ra chẩn đoán trong những trường hợp như vậy. Sử dụng

                i = x
7 thay vì
                i = x
8 có thể (hoặc không) cung cấp cho bạn phạm vi số nguyên rộng hơn, nhưng nó vẫn nhỏ hơn phạm vi số dấu phẩy động. (Sử dụng
                i = x
7 được khuyến nghị. )

Nếu tính hiệu quả không quan trọng, bạn nên làm cho chương trình của mình mạnh mẽ hơn bằng cách định nghĩa hàm (thay vì #define đơn giản ở trên)

Có một số cách khác nhau để lưu trữ dữ liệu trong C và tất cả chúng đều là duy nhất với nhau. Các kiểu dữ liệu mà thông tin có thể được lưu trữ được gọi là các kiểu dữ liệu. C ít tha thứ hơn nhiều về các loại dữ liệu so với các ngôn ngữ khác. Do đó, điều quan trọng là đảm bảo rằng bạn hiểu các loại dữ liệu hiện có, khả năng và giới hạn của chúng

Một điều khó hiểu về các kiểu dữ liệu của C là chúng phụ thuộc hoàn toàn vào phần cứng mà bạn đang chạy mã của mình trên đó. Một

                i = x
8 trên máy tính xách tay của bạn sẽ nhỏ hơn một
                i = x
8 trên siêu máy tính, vì vậy việc biết những giới hạn của phần cứng mà bạn đang làm việc là rất quan trọng. Đây cũng là lý do tại sao các loại dữ liệu được xác định là giá trị tối thiểu- một giá trị
                i = x
8, như bạn sẽ tìm hiểu, là tối thiểu -32767 đến 32767. trên một số máy nhất định, nó sẽ có thể lưu trữ nhiều giá trị hơn

Có hai loại mà chúng ta có thể chia thành. số nguyên và số dấu phẩy động. Số nguyên là số nguyên. Chúng có thể dương, âm hoặc bằng không. Các số như -321, 497, 19345 và -976812 đều là các số nguyên hoàn toàn hợp lệ, nhưng 4. 5 không phải vì 4. 5 không phải là số nguyên

Số dấu phẩy động là số có phần thập phân. Giống như số nguyên, -321, 497, 19345 và -976812 đều hợp lệ, nhưng bây giờ là 4. 5, 0. 0004, -324. 984 và các số không nguyên khác cũng hợp lệ

C cho phép chúng tôi chọn giữa một số tùy chọn khác nhau với các loại dữ liệu của chúng tôi vì tất cả chúng đều được lưu trữ theo những cách khác nhau trên máy tính. Do đó, điều quan trọng là phải nhận thức được khả năng và hạn chế của từng loại dữ liệu để chọn loại phù hợp nhất.

Kiểu dữ liệu số nguyên

Nhân vật. i = x 3

                i = x
3 giữ các ký tự- những thứ như chữ cái, dấu chấm câu và dấu cách. Trong máy tính, các ký tự được lưu trữ dưới dạng số, do đó,
                i = x
3 giữ các giá trị số nguyên đại diện cho các ký tự. Bản dịch thực tế được mô tả theo tiêu chuẩn ASCII. Đây là một bảng tiện dụng để tra cứu điều đó

Kích thước thực tế, giống như tất cả các kiểu dữ liệu khác trong C, phụ thuộc vào phần cứng mà bạn đang làm việc. Tối thiểu, nó có ít nhất 8 bit, vì vậy bạn sẽ có ít nhất 0 đến 127. Ngoài ra, bạn có thể sử dụng

                i = x
6 để nhận được ít nhất -128 đến 127

Số nguyên tiêu chuẩn. i = x 8

Dung lượng bộ nhớ mà một

                i = x
8 sử dụng tùy thuộc vào phần cứng. Tuy nhiên, bạn có thể mong đợi một
                i = x
8 có kích thước ít nhất là 16 bit. Điều này có nghĩa là nó có thể lưu trữ các giá trị từ -32,768 đến 32,767 hoặc nhiều hơn tùy thuộc vào phần cứng

Giống như tất cả các loại dữ liệu khác này, có một biến thể

Hello World!Hello! I am a character. 
My value is G and my size is 1 byte.
Hello! I am an integer. 
My value is 1 and my size is 4 bytes.
Hello! I am a double floating point variable. 
My value is 3.140000 and my size is 8 bytes.
Bye! See you soon. :)
2 có thể được sử dụng.
Hello World!Hello! I am a character. 
My value is G and my size is 1 byte.
Hello! I am an integer. 
My value is 1 and my size is 4 bytes.
Hello! I am a double floating point variable. 
My value is 3.140000 and my size is 8 bytes.
Bye! See you soon. :)
3 có thể dương và 0 nhưng không âm, do đó, nó có thể lưu trữ các giá trị từ 0 đến 65.535 hoặc nhiều hơn tùy thuộc vào phần cứng

số nguyên ngắn. Hello World!Hello! I am a character. My value is G and my size is 1 byte. Hello! I am an integer. My value is 1 and my size is 4 bytes. Hello! I am a double floating point variable. My value is 3.140000 and my size is 8 bytes. Bye! See you soon. :)4

Điều này không được sử dụng thường xuyên, nhưng thật tốt khi biết rằng nó tồn tại. Giống như int, nó có thể lưu trữ -32768 đến 32767. Tuy nhiên, không giống như int, đây là phạm vi khả năng của nó. Bất cứ nơi nào bạn có thể sử dụng

Hello World!Hello! I am a character. 
My value is G and my size is 1 byte.
Hello! I am an integer. 
My value is 1 and my size is 4 bytes.
Hello! I am a double floating point variable. 
My value is 3.140000 and my size is 8 bytes.
Bye! See you soon. :)
4, bạn có thể sử dụng
                i = x
8

Số nguyên dài hơn. Hello World!Hello! I am a character. My value is G and my size is 1 byte. Hello! I am an integer. My value is 1 and my size is 4 bytes. Hello! I am a double floating point variable. My value is 3.140000 and my size is 8 bytes. Bye! See you soon. :)7

Kiểu dữ liệu

Hello World!Hello! I am a character. 
My value is G and my size is 1 byte.
Hello! I am an integer. 
My value is 1 and my size is 4 bytes.
Hello! I am a double floating point variable. 
My value is 3.140000 and my size is 8 bytes.
Bye! See you soon. :)
7 lưu trữ các số nguyên như
                i = x
8, nhưng cung cấp phạm vi giá trị rộng hơn với chi phí chiếm nhiều bộ nhớ hơn. Long lưu trữ ít nhất 32 bit, cho phạm vi từ -2.147.483.648 đến 2.147.483.647. Ngoài ra, sử dụng
                i = x
80 cho phạm vi từ 0 đến 4.294.967.295

Số nguyên dài hơn. i = x 81

Kiểu dữ liệu

                i = x
81 là quá mức cần thiết đối với mọi ứng dụng, nhưng C vẫn sẽ cho phép bạn sử dụng nó. Nó có khả năng lưu trữ ít nhất −9.223.372.036.854.775.807 đến 9.223.372.036.854.775.807. Ngoài ra, thậm chí còn cao hơn mức cần thiết với
                i = x
83, sẽ cung cấp cho bạn ít nhất 0 đến 18.446.744.073.709.551.615

Kiểu dữ liệu số dấu phẩy động

Số dấu phẩy động cơ bản. i = x 84

                i = x
84 mất ít nhất 32 bit để lưu trữ, nhưng cung cấp cho chúng tôi 6 chữ số thập phân từ 1. 2E-38 đến 3. 4E+38

đánh đôi. i = x 86

                i = x
86 chiếm gấp đôi bộ nhớ của float (vì vậy ít nhất là 64 bit). Đổi lại, double có thể cung cấp 15 chữ số thập phân từ 2. 3E-308 đến 1. 7E+308

Nhận được nhiều phạm vi nhân đôi hơn. i = x 88

                i = x
88 mất ít nhất 80 bit. Kết quả là, chúng ta có thể nhận được 19 chữ số thập phân từ 3. 4E-4932 đến 1. 1E+4932

Chọn đúng kiểu dữ liệu

C chọn loại dữ liệu và làm cho chúng tôi rất cụ thể và có chủ ý về cách chúng tôi thực hiện việc này. Điều này mang lại cho bạn rất nhiều quyền lực đối với mã của bạn, nhưng điều quan trọng là phải chọn mã phù hợp

Nói chung, bạn nên chọn mức tối thiểu cho nhiệm vụ của mình. Nếu bạn biết bạn sẽ đếm từ số nguyên 1 đến 10, bạn không cần số dài và số gấp đôi. Nếu bạn biết rằng bạn sẽ không bao giờ có giá trị âm, hãy xem xét sử dụng các biến thể

Hello World!Hello! I am a character. 
My value is G and my size is 1 byte.
Hello! I am an integer. 
My value is 1 and my size is 4 bytes.
Hello! I am a double floating point variable. 
My value is 3.140000 and my size is 8 bytes.
Bye! See you soon. :)
2 của loại dữ liệu. Bằng cách cung cấp chức năng này thay vì thực hiện tự động, C có thể tạo mã rất nhẹ và hiệu quả. Tuy nhiên, với tư cách là lập trình viên, việc hiểu các khả năng và hạn chế của bạn và lựa chọn cho phù hợp là tùy thuộc vào bạn.

Chúng ta có thể sử dụng toán tử sizeof() để kiểm tra kích thước của một biến. Xem chương trình C sau đây để biết cách sử dụng các loại dữ liệu khác nhau

                i = x
5

đầu ra

________số 8

Loại hư không

Loại void chỉ định rằng không có giá trị nào. Nó được sử dụng trong ba loại tình huống

1. Hàm trả về dạng void

Có nhiều hàm khác nhau trong C không trả về bất kỳ giá trị nào hoặc bạn có thể nói rằng chúng trả về void. Một hàm không có giá trị trả về có kiểu trả về là void. Ví dụ,

                i = x
81

2. Đối số chức năng là void

Có nhiều hàm khác nhau trong C không chấp nhận bất kỳ tham số nào. Hàm không có tham số có thể chấp nhận khoảng trống. Ví dụ,

                i = x
82

3. Con trỏ để làm mất hiệu lực

Một con trỏ kiểu void * đại diện cho địa chỉ của một đối tượng, nhưng không phải kiểu của nó. Ví dụ: hàm cấp phát bộ nhớ

                i = x
83 trả về một con trỏ tới void có thể được truyền tới bất kỳ loại dữ liệu nào

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


Nếu bài viết này hữu ích, hãy tweet nó

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Bạn có thể biến một số float thành một số nguyên không?

Một giá trị float có thể được chuyển đổi thành một giá trị int không lớn hơn giá trị đầu vào bằng cách sử dụng phép toán. hàm floor() , trong khi nó cũng có thể được chuyển đổi thành giá trị int là số nguyên nhỏ nhất lớn hơn giá trị đầu vào bằng toán học. chức năng trần().

Tôi có thể lưu trữ float trong int trong C không?

Vì vậy bạn không thể lưu giá trị float trong một đối tượng int thông qua phép gán đơn giản . Bạn có thể lưu trữ mẫu bit cho một giá trị dấu phẩy động trong một đối tượng int nếu int ít nhất rộng bằng float , bằng cách sử dụng memcpy hoặc một số loại thể dục dụng cụ (như các câu trả lời khác đã hiển thị).

%f có phải là float trong C không?

f có nghĩa là nổi . Nó giống như một ngôn ngữ lập trình C.

Int và float có bằng C không?

Gán số nguyên cho float và so sánh trong C/C++ . Chúng không thể có số thập phân. Float là kiểu dữ liệu dùng để xác định một số có giá trị phân số . Đây cũng có thể có số thập phân.