zoukankan      html  css  js  c++  java
  • C语言-char 类型基本概念

    char类型的变量在内存中是如何存储的呢?

    • char 是占一个字节的
        int num;
        char charValue;
        printf("num 的内存地址%p
    ",&num); // 0x7ffeefbff42c
        printf("charValue的内存地址%p
    ",&charValue); // 0x7ffeefbff42b
        // 通过打印的内存地址可以发现,定义的两个变量在内存中的地址只差一个字节
    
    • char 存储的是单个字符,那么c内存中是识别 0 和 1,数字通过二进制存储,那么 char 类型呢?
      • 在存储 char 类型时,系统会去查询 ASCII 码表的值,再进行存储,取值的时候也是一样
        // 通过一张 ASCII 码表,将字符与数字对应起来
        // 另外:在 C语言中不看怎么存储数据只看怎么取这个数据
        char charValue = 'a';
        printf("通过使用百分号 i 来取 charvalue 的值:%i
    ",charValue); // 97
    

    • char 类型存储数字
        char value = 6;//这个存储的就是数字 00000110
        char charValue = '6'; // 需要查询 ASCII 码表中对应的数字是:70 // 00110110
        printf("数字:%i
    ",value); // 6
        printf("字符:%i
    ",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("请您输入一个字母,以回车结束
    ");
        char charValue;
        scanf("%c",&charValue);
        // char result = Upper(charValue);
        char result = Upper1(charValue);
        printf("转换后的值:%c
    ",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; // 如果条件不满足则原路返回
        
    }
    
    
  • 相关阅读:
    lua 10 迭代器
    lua 9 parttern 字符极其简要的介绍
    lua 7 运算符
    lua 6 函数
    lua 5 流程控制 if
    线程池的设计问题/线程数量计算
    一个父子进程管道通信的复习
    redis 网络库文件 重构
    带标准IO带缓存区和非标准IO 遇到fork是的情况分析
    libevent 同性恋 讲解
  • 原文地址:https://www.cnblogs.com/shanshan-test/p/12977278.html
Copyright © 2011-2022 走看看