Rumah > pembangunan bahagian belakang > C++ > Mengapakah `cout` Tidak Mencetak Nilai `unsigned char` Dengan Betul?

Mengapakah `cout` Tidak Mencetak Nilai `unsigned char` Dengan Betul?

Barbara Streisand
Lepaskan: 2024-11-29 11:53:10
asal
689 orang telah melayarinya

Why Doesn't `cout` Print `unsigned char` Values Correctly?

Mengapa cout Not Printing unsigned char Betul?

Dalam kod yang disediakan:

#include <iostream>
#include <stdio.h>

using namespace std;

int main() {
    unsigned char a = 1;
    printf("%d", a);
    cout << a;
}
Salin selepas log masuk

Output termasuk nilai yang kelihatan sebagai sampah apabila dicetak menggunakan cout. Ini berlaku kerana aksara ASCII yang sepadan dengan nilai a (1) tidak boleh dicetak. Untuk mengesahkan ini, gunakan std::isprint seperti berikut:

std::cout << std::isprint(a) << std::endl;
Salin selepas log masuk

Hasilnya akan menjadi 0 (palsu), menunjukkan bahawa aksara itu tidak boleh dicetak.

Untuk menyelesaikan isu ini dan mempunyai cout cetak "1", hantar a ke integer tidak bertanda:

cout << static_cast<unsigned>(a) << std::endl;
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah `cout` Tidak Mencetak Nilai `unsigned char` Dengan Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan