C語言-字符類型


C語言-字符類型

char不僅是一種整數,也是一種特殊的類型:字符(character)。

  • 常用單引號表示字符的字面量,如'a', '1'。
  • 單引號''也是一個字符,printf和scanf里用的%c來輸入輸出字符

注意:char整數類型和字符類型不相等,如1與"1",一個是數字,一個是字符,

#include <stdio.h>
int main()
{
    char c;
    char d;
    c = 1;
    d = '1';//將字符賦值給一個char變量
    if (c == d){
        printf("相等\n");
    }else{
        printf("不相等\n");
    }
    printf("c=%d\n",c);
    printf("d=%d\n",d);
    return 0;
}
//結果:不相等!

作為一個整數,c的輸出值為1,d的輸出值為49。計算機中用49來表達字符1。每一個字符在計算機中都有一個值來表達它(ASCII碼)。同理,在使用scanf時也是如此。

字符的輸入輸出

在scanf里輸入'1'這個字符給char c:

scanf("%c",&c); -> 1,輸入1得到49

scanf("%d",&i); c = i ; -> 49,需要輸入49

#include <stdio.h>
int main()
{
    char c;
    scanf("c%",&c);//scanf將值傳給c,以下面兩種形式輸出
    printf("c=%d\n",c);//以整數值是多少
    printf("d='%c'\n",c);//如果當做一個字符,它是多少,這里%c的''自己加上去的,這樣結果顯示時有''
    return 0;
}
//結果輸入1,c=49,c='1'

以%d的輸入情況下去讀取,觀察結果。scanf只能處理int,不能處理char,所以對上面代碼進行了更改(不能把int類型轉為char類型,但可以輸入char)

#include <stdio.h>
int main()
{
    int i;
    char c;
    scanf("d%",&i);//%d是整型,int的數值不能轉為字符
    c = i
    printf("c=%d\n",c);//以整數值是多少
    printf("d='%c'\n",c);//如果當做一個字符,它是多少,這里%c的''自己加上去的,這樣結果顯示時有''
    return 0;
}
//結果:輸入給它1。c=1,d='';輸入給它49。c=49,d='1'

這里整數49與'1'相等。

混合輸入

  • 注意下面的不同(空格區別)
  • scanf("%d %c",&i,&c)
  • scanf("%d%c",&i,&c)

%c:從輸入里讀出一個字符

#include <stdio.h>
int main()
{
    int i
    char c;
    scanf("d% %c",&i,&c);//%d是整型,int的數值不能轉為字符
    printf("i=%d",c=%d,c='%c'\n",i,c,c);
    return 0;
}
//輸入12 1。i=12,c=49,c='1'
//輸入12a。i=12,c=97,c='a'
//輸入12  1。i=12,c=49,c='1'
//將scanf中換成"d%%c"
//輸入12 1。i=12,c=32,c=' ',空格的ASCII就是32
//輸入12a。i=12,c=97,c='a'
//輸入12  1。i=12,c=32,c=' '

%d后面沒有空格,整數只讀到整數結束為止,后面的分配給后面;如果后面是有空格的,讀到整數后還要把后面的空格都讀到。也就是說在%c前加空格會跳過空白字符(空格、換行符)開始讀取,不加空格會把空白字符也讀取。

字符計算

既然字符是一種整數,當然可以做運算。

#include <stdio.h>
int main()
{
    char c = 'A'
    c++
    printf("%c\n",c);
    return 0;
}
//結果為B。c+=2會等到C
//做減法
//int i = 'Z' - 'A';
//printf("%d\n",i);
//結果為25
  • 一個字符加一個數字得到ASCII碼表中那個數之后的字符
  • 兩個字符的減法,得到它們在表中的距離
  • 字母在ASCII表中是順序排列的
  • 大寫字母和小寫字母是分開排列的,並不在一起
  • 'a'-'A'可以得到兩段之間的距離,A+'a'-'A'可以把一個大寫字母變成小寫字母,而a+'A'-'a'可以把一個小寫字母變成大寫字母


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM