Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

Chuyển kiểu từ int sang char

344 Lượt xem 5 Bình luận 0 Lượt báo xấu
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 !

Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

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.
0 Lượt thích

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
0 Lượt thích

Range của kiểu signed char bằng range của kiểu char và bằng [-128; 127], còn range của kiểu unsigned char bằng [0; 255].
Nếu i > 127 thì giá trị của c sẽ bị overflow và được gán giá trị ngược trở lại.
Vd: i = 127 thì c = 127; i = 128 thì c = -128; i = 129 thì c = -127; i = 130 thì 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:
#include <stdio.h>
#include <iostream>
int main(int n, char** args)
{
	int i = 140;
	char c = i;
	int j;
	if (i <= 127)
		j = c;
	else
		j = 2*127 + c + 2;

	printf("%d %c\n", j, c);
	system("pause");
}
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 char và unsigned char mà thôi.
0 Lượt thích

À, cho mình hỏi là:
bài này là lập trình C hay C++ vậy?
0 Lượt thích

Bài này là lập trình C thôi.
Cảm ơn các bạn và đặc biệt là Phú Nguyễn nhé.
Mình đã xử lý được rồi!!!!!
 
0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng