簡體   English   中英

在 C 中將 char 轉換為 int?

[英]Convert char to int in C?

我正在閱讀一些有關如何將 char 轉換為 int 的示例,並且我有以下代碼:

#include <stdio.h>

int main()
{
    char ch1 = 125, ch2 = 10;
    ch1 = ch1 + ch2;
    printf("%d\n", ch1);
    printf("%c\n", ch1 - ch2 - 4);
    return 0;
}

我知道,如果我們進行任何字符運算,char 類型將轉換為 int

那么為什么第一個 printf 語句的結果是-121而不是135因為我知道 int range 將處理 135 所以不會發生溢出。

第二條 printf 語句將打印 y,因為我們將 %c 放入 printf 中。

“char”變量類型通常默認為“signed char”類型。
“signed char”變量的值范圍從 -127 到 +127。

超出這個正范圍限制會導致該程序的負面結果。

正如 bolov 正確指出的那樣,結果是 char 類型,因此您將其轉換回 char。

說明: 由於ch1 + ch2的結果存儲在ch1中,它是一個 char 類型,因此計算操作將在 127 處最大並繼續,從 -128 的最低 char 值開始。 所以得到的ch1將是 -121:

ch1 =  -128 - 1 + (125 + 10 - 127)
or ch1 = -121

要解決此問題,只需將結果存儲到一個int變量,或者如果您真的想優化 memory,然后存儲到一個unsigned char變量。

#include <stdio.h>
int main(){
    char ch1 = 125, ch2 = 10;
    unsigned char ch3;
    ch3 = ch1 + ch2;
    ch1 = ch1 + ch2;
    printf("%d\n", ch1);
    printf("%c\n", ch1 - ch2 - 4);
    printf("%d\n", ch3);
    return 0;
}

結果:

-121
y
135

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM