C語言-char 類型基本概念


char類型的變量在內存中是如何存儲的呢?

  • char 是占一個字節的
    int num;
    char charValue;
    printf("num 的內存地址%p\n",&num); // 0x7ffeefbff42c
    printf("charValue的內存地址%p\n",&charValue); // 0x7ffeefbff42b
    // 通過打印的內存地址可以發現,定義的兩個變量在內存中的地址只差一個字節
  • char 存儲的是單個字符,那么c內存中是識別 0 和 1,數字通過二進制存儲,那么 char 類型呢?
    • 在存儲 char 類型時,系統會去查詢 ASCII 碼表的值,再進行存儲,取值的時候也是一樣
    // 通過一張 ASCII 碼表,將字符與數字對應起來
    // 另外:在 C語言中不看怎么存儲數據只看怎么取這個數據
    char charValue = 'a';
    printf("通過使用百分號 i 來取 charvalue 的值:%i\n",charValue); // 97

  • char 類型存儲數字
    char value = 6;//這個存儲的就是數字 00000110
    char charValue = '6'; // 需要查詢 ASCII 碼表中對應的數字是:70 // 00110110
    printf("數字:%i\n",value); // 6
    printf("字符:%i\n",charValue); // 54
  • Char類型在某些情況下可以當做整型來用
    • 如果對內存要求特別嚴格,而且需要存儲的整數不超過 char 類型的取值范圍,那么就可以使用char 類型來代替 int類型
    • char 的取值范圍是:char 類型占一個字節,也就是 8 位,那么取值范圍就是-2* 7->2 *7-1 === 128-127

練習

char Upper(char value);
char Upper1(char value);

main(){
        // 練習
    // 要求用戶輸入一個字母,如果用戶輸入的是大寫那么就轉換為小寫
    printf("請您輸入一個字母,以回車結束\n");
    char charValue;
    scanf("%c",&charValue);
    // char result = Upper(charValue);
    char result = Upper1(charValue);
    printf("轉換后的值:%c\n",result);
    
    
    return 0;
}


// 此方法沒有判斷用戶輸入的是否是大寫的字母
char Upper(char value){
    char charValue = value + 32;
    return charValue;
}

char Upper1(char value){
    if (value >= 'A' && value <='Z'){
        // value = value + 32; // 如果條件滿足則返回大寫
        // 此處 value 是 char 類型,與int 類型相加,小類型和大類型運算時先隱式轉換為大類型就算結果
        // 然后得出的結果 97 再轉化為 char 類型
        value = value + ('a'-'A');  // 動態計算大寫 A 和小寫 a 的差值
        
    }
    return value; // 如果條件不滿足則原路返回
    
}


免責聲明!

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



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