30/09/2018, 19:58
Chuyển kiểu từ int sang char
Chào các bạn ! Mình có một đoạn code thế này :
#include <stdio.h>
#include <iostream>
int main(int n, char** args)
{
int i = 140;
char c = i;
int j = c;
printf("%d", j);
system("pause");
}
-Yêu cầu 1: chạy và giải thích kết quả .-thay char c bằng unsigned char c chạy và giải thích kết quả.
-Yêu cấu 2::đưa ra giải pháp để giá trị của j đúng bằng giá trị của i(giả sử i 0->255 và không sử dụng unsigned char)
Với yêu cầu 1 mình search google và cũng tìm được cách giải thích nhưng với yêu cầu 2 thì mình chịu .Bạn nào có giải pháp nào chỉ mình với !
Bài liên quan





bạn dùng các phép toán số học như nhân chia, hoặc các phép toán trên bit như dịch trải, phải để làm xem.
Mình nghĩ chuyển 140 thành mã nhị phân rồi thêm 0 đằng trước, như thế bit dấu sẽ là 0 là số dương
Range của kiểu
signed charbằng range của kiểucharvà bằng[-128; 127], còn range của kiểuunsigned charbằng[0; 255]. Bạn xem thêm ở đây.Nếu
i > 127thì giá trị củacsẽ bị overflow và được gán giá trị ngược trở lại.Vd:
i = 127thìc = 127;i = 128thìc = -128;i = 129thìc = -127;i = 130thìc = -126; …ở đây ko có một giải pháp chính tắc nào để giải quyết yêu cầu của bạn mà ko khai báo
unsigned char, bởi vì bạn đang cố gắng biểu diễn một giá trị nằm ngoài phạm vi của một kiểu dữ liệu. Tuy nhiên có một cách mẹo mà mình ko khuyến khích lắm:Mục đích của bài tập này chỉ là để cho thấy sự khác nhau giữa 2 kiểu dữ liệu
charvàunsigned charmà thôi.Ủa bạn đây là lập trình C hay C++ vậy?