[英]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.