cuốn sách gpt4 ai đã làm

Giá trị thay đổi biến (ngắn) khi sao chép/chuyển nhượng

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 06:23:12 26 4
mua khóa gpt4 Nike

Tôi có đoạn mã sau:

  num_short ngắn = 1;
int could_new_short = 1;
hợp lệ = 1;

trong khi (hợp lệ) {
có thể_new_short = num_short * 10;
printf("----\n");
printf("Số ngắn: %d\n", num_short);
printf("Có thể có đoạn ngắn mới: %d\n", có thể_new_short);
if (có thể_new_short % 10 == 0) {
num_short = có thể_new_short;
printf("Mới! %d\n", num_short);
} khác {
hợp lệ = 0;
}
nếu (num_short == 0) {
hợp lệ = 0;
}
}
printf("num_short: %d\n", num_short);

输出如下:

----
Số ngắn: 1
Có thể có đoạn ngắn mới: 10
Mới! 10
----
Số ngắn: 10
Có thể có đoạn ngắn mới: 100
Mới 100
----
Số ngắn: 100
Có thể có khoản ngắn mới: 1000
Mới! 1000
----
Số ngắn: 1000
Có thể có khoản ngắn mới: 10000
Mới! 10000
----
Số ngắn: 10000
Có thể có khoản ngắn mới: 100000
Mới! -31072
----

如您所见,có thể_new_short 的值为 100000, nhưng khi được gán lại cho số_ngắn khi nào, nó trở thành -31072. Tại sao điều này lại xảy ra?

Tôi mới làm quen với C và tôi đoán số_ngắn Biến đã bị tràn. bởi vìsố_ngắncó thể_new_shortĐược lưu trữ trong các khe cắm bộ nhớ khác nhau, một khe có thể tràn và khe còn lại thì không?

Một số phương pháp hay nhất để ngăn chặn điều này xảy ra là gì?

câu trả lời hay nhất

Suy đoán của bạn là chính xác,số_ngắn Đúngngắn loại, thường là 16-bit trên hầu hết các máy hiện nay.

Số nguyên có dấu 16 bit có thể chứa tối đa 215 − 1, tức là 32767. giá trị cuối cùng 100000 tràn.

có thể_new_short sẽ không tràn vì loại của nó là int. Nói chung, hãy xem xét giá trị tối đa có thể có của một biến và xác định loại của nó cho phù hợp. Ví dụ: thay vào đó bạn có thể sử dụng dài 甚至 dài dài.

Về giá trị thay đổi c - biến (ngắn) khi sao chép/gán, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/30635139/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress