Tôi gặp vấn đề tương tự here mà tôi đã quên mất từ lâu. Các giải pháp cho vấn đề này với iostream's
cout
thể được thực hiện như thế này:
#include<iostream>
#include<stdio.h>
main() {
unsigned char a;
a=1;
printf("%d", a);
std::cout<< +a << std::endl;
return 0;
}
thay vì đúc nó trở lại kiểu khác nếu bạn muốn cout
để in các giá trị unsigned char
như trái ngược với nhân vật ascii
. Bạn cần phải promote
nó.
Nếu bạn nhận thấy tất cả những gì tôi đã làm là thêm +
trước unsigned char
. Đây là bổ sung đơn nhất sẽ quảng bá cho unsigned char
để cung cấp cho bạn số đại diện thực tế.
Người dùng Baum mit Augen chịu trách nhiệm nhắc tôi về giải pháp này.
Nguồn
2017-12-29 15:22:09
Một 'unsigned char' không phải là' int'. Tại sao bạn nói 'printf' nó là? – chris
Bạn mong đợi điều gì từ việc gửi một tệp nhị phân 1 đến stout? –
@chris 'unsigned char' sẽ được thăng thành 'unsigned' trong cuộc gọi printf, vì vậy mã có thể chấp nhận được. – john