30/09/2018, 19:33

Thắc mắc về ép kiểu

Các sư huynh cho em hỏi, khi debug đoạn code sau thì kết quả xuất ra là : -1 3 0 0
có thể giải thích cho em lí do tại sao không?

int x = 1023;
char *p = (char *)&x;
printf(“%d %d %d %d ”, p[0], p[1], p[2], p[3]);

Khôi Trần viết 21:38 ngày 30/09/2018

chú ý giới hạn kiểu dữ liệu . hết

Nguyễn Minh Trí viết 21:37 ngày 30/09/2018

mục đích của bài này là gì?

Chí Cường Trần viết 21:49 ngày 30/09/2018

Gắn cái địa chỉ của cái biến int vào cái biến con trỏ rồi in nội dung của biến con trỏ theo cách in mảng

Nguyễn Minh Trí viết 21:35 ngày 30/09/2018

mảng 1 chiều là 1 con trỏ chứ không có chuyện con trỏ là mảng 1 chiều nên không thể in được con trỏ theo cách in mảng được, vì giá trị của con trỏ sẽ bằng với địa chỉ của phần tử đầu tiên trong mảng nên ta chỉ in được phần tử đầu tiên trong mảng thôi

int x = 5;
char *p = (char *)&x;
printf("%d", p[0]); //in ra 5

mình cho x = 5 vì kiểu char có kích thước nhỏ hơn kiểu int nên khi ép kiểu thì giá trị biến x phải nằm trong giới hạn của kiểu char

Hải Triều Nguyễn viết 21:46 ngày 30/09/2018

bài này là 1 bài tập nhỏ thầy cho mình về làm rồi bảo giải thích lí do thôi

Nguyễn Minh Trí viết 21:47 ngày 30/09/2018

mình chưa hiểu ý lắm, giải thích cách ép kiểu hay muốn hiểu sâu về con trỏ, thầy bạn mà giải đáp thì giải thích cho mình biết vs nhé

*grab popcorn* viết 21:38 ngày 30/09/2018

1023 =
00000000 00000000 00000011 11111111 (2)
Ép kiểu = lấy số byte tương ứng với kiểu đó từ thấp tới cao.
Như trên là char ->1 byte là ta lấy 11111111 = -1
p[1] = ô nhớ tiếp theo, do kiểu char nên chỉ lấy 1 byte = 00000011 = 3
còn lại 2 ô kia ko có gì thì in ra 0

Nguyễn Minh Trí viết 21:39 ngày 30/09/2018

p[0] phải bằng 255 chứ sao lại bằng -1 vậy
11111111 = 255

*grab popcorn* viết 21:46 ngày 30/09/2018

unsigned char sẽ là 255

Nguyễn Minh Trí viết 21:47 ngày 30/09/2018

kiểu char có miền giá trị từ -128 đến 127 sao 11111111 lại bằng -1 nhỉ?

*grab popcorn* viết 21:49 ngày 30/09/2018

Bạn tìm hiểu cách máy tính lưu trữ số âm là rõ.

Advanced programming – 2 Jan 12

Cách biểu diễn số âm trong máy tính (phương pháp Bù 2)

Để biểu diễn số Âm trong máy tính thông thường người ta sử dụng phương pháp Bù 2. Topic này được viết để bổ sung kiến thức cho Topic (Java Assignment Operator) Theo phương pháp này, bit cực trái ha…

Nguyễn Minh Trí viết 21:34 ngày 30/09/2018

[enter link description here]
(http://www.stdio.vn/articles/read/5-ban-chat-cua-bien-trong-cc)nãy giờ đang đọc cái này cũng hiểu được chút chút
để đọc tiếp link của bạn xem sao. tks

Chí Cường Trần viết 21:42 ngày 30/09/2018

Bạn này nói đúng nội dung 9 của vấn đề. Còn cách in đúng chưa thì chưa biết

Chí Cường Trần viết 21:34 ngày 30/09/2018

Cái này có học nhưng lâu quá không dùng nen quên rồi

Bài liên quan
0