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]);
Bài liên quan
chú ý giới hạn kiểu dữ liệu . hết
mục đích của bài này là gì?
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
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
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
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
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é
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
p[0] phải bằng 255 chứ sao lại bằng -1 vậy
11111111 = 255
unsigned char sẽ là 255
kiểu char có miền giá trị từ -128 đến 127 sao 11111111 lại bằng -1 nhỉ?
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…
[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
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
Cái này có học nhưng lâu quá không dùng nen quên rồi