前言
在九度oj做acm的時候,經常會遇到了char類型和int類型相互轉化的問題,這裡進行一下總結。今後,可能會多次更新部落格,因為半年做了很多總結,但是都是儲存在word文檔上了,現在開始慢慢向CSDN部落格轉移。
問題類型
char型數字轉換為int型轉換方法
a[i] - '0'
參考程式
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){char str[10];int i, len;while(scanf("%s", str) != EOF){for(i = 0, len = strlen(str); i < len; i++){printf("%d", str[i] - '0');}printf("\n");}return 0;}
int類型轉化為char類型
轉換方法
a[i] + '0'
參考程式
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){int number, i;char str[10];while(scanf("%d", &number) != EOF){memset(str, 0, sizeof(str));i = 0;while(number){str[i ++] = number % 10 + '0';number /= 10;}puts(str);}return 0;}
C語言中單引號和雙引號的區別
1、含義不同
用單引號引起的一個字元實際上代表一個整數,整數值對應於該字元在編譯器採用的字元集中的序列值。而一般我們的編譯器採用的都是ASCII字元集。因此's'的含義其實和十進位數115的含義是一致的。
而用雙引號引起的字串,代表的是一個指向無名數組起始字元的指標。
2、大小不同
用單引號引起的一個字元大小就是一個位元組。
而用雙引號引起的字串大小是字元的總大小+1,因為用雙引號引起的字串會在字串末尾添加一個二進位為0的字元'\0'。