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
Barbara Streisandasal
2024-11-29 11:53:10757semak imbas

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;
}

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;

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;

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!

Kenyataan:
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