日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言編程基礎char類型轉換示例_C 語言

作者:jiangwei0512 ? 更新時間: 2022-07-31 編程語言

代碼

如下所示:

#inlcude <stdio.h>

void func1(void)
{
    char a = 0x7F;
    unsigned char b = a;
    unsigned int c = a;

    printf ("a: %d(0x%x)\n", a, a); // a: 127(0x7f)
    printf ("b: %d(0x%x)\n", b, b); // b: 127(0x7f)
    printf ("c: %d(0x%x)\n", c, c); // c: 127(0x7f)
}

void func2(void)
{
    char a = 0x80;
    unsigned char b = a;
    unsigned int c = a;

    printf ("a: %d(0x%x)\n", a, a); // a: -128(0xffffff80)
    printf ("b: %d(0x%x)\n", b, b); // b: 128(0x80)
    printf ("c: %d(0x%x)\n", c, c); // c: -128(0xffffff80)
}

void func3(void)
{
    char a = 0xFF;
    unsigned char b = a;
    unsigned int c = a;

    printf ("a: %d(0x%x)\n", a, a); // a: -1(0xffffffff)
    printf ("b: %d(0x%x)\n", b, b); // 255(0xff)
    printf ("c: %d(0x%x)\n", c, c); // c: -1(0xffffffff)
}

int main(void)
{
    func1();
    func2();
    func3();

    return 0;
}

對應的結果已經放在注釋中。

分析

首先需要說明的是printf()函數做格式化時,默認將值看成是32位的,所以示例中的某些char才會顯示成了8個字節的。

其實當char往int轉換時,會根據最高位的值進行不同的轉換,如果是最高位是1,則轉換時高24位也都是1,反之則是0,這也是為什么最終打印結果是注釋中顯示的那樣的原因。

原文鏈接:https://blog.csdn.net/jiangwei0512/article/details/124516174

欄目分類
最近更新