189 8069 5689

C之单引号和双引号(十三)-创新互联

    在 C 语言中,我们会经常使用到单引号和双引号。那么单引号用来表示字符字面量,双引号是用来表示字符串字面量。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站制作、成都网站制作、庐山网络推广、微信平台小程序开发、庐山网络营销、庐山企业策划、庐山品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联为所有大学生创业者提供庐山建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

        'a' 表示字符字面量,在内存中占1个字节; 'a' + 1表示 'a' 的 ASCII 码加1,结果为 'b'。

        "a" 表示字符串字面量,在内存中占2个字节;"a" + 1表示指针运算,结果指向"a"结束符'\0'。

        字符字面量在 C 语言中国被编译为对应的 ASCII 码,字符串字面量被编译为对应的内存地址。printf 的第一个参数被当成字符串内存地址,内存的低地址空间不能在程序中随意访问。下图表示三种写法的地址

C之单引号和双引号(十三)

        我们接下来看个示例代码,代码如下:

#include 

int main()
{

    char c = " ";
    
    while( (c == "\t") || (c == " ") || (c == "\n") )
    {
        scanf("%c", &c);
    }
    
    return 0;
}

        我们这段代码是想实现当用户输入 tab 键、空格或者回车时,程序继续循环执行。当用户随便输入字母或者数字什么的,程序就执行完毕。我们来编译下看看结果是否如此

C之单引号和双引号(十三)

        并没有实现这个功能,显然编译出了3个警告,而且我们运行后程序仿佛没执行while循环。我们再来仔细分析下这个程序,我们上面 char c = " "; 相当于 char c = "string"; 程序编译后字符串"string"的内存地址被赋值给变量 c;内存地址占 4 个字节,而变量 c 只占1个字节;由于类型不同,赋值后产生截断。那么我们如何解决这个问题呢?只需将所有的双引号换成单引号即可,我们再次编译,得到结果如下:

C之单引号和双引号(十三)

            我们看到程序没有编译错误,运行后效果也是我们所期望的。今天我们学习了单引号和双引号的相关知识,总结如下:1、单引号括起来的单个字符代表整数,双引号括起来的字符代表字符指针;2、C 编译器接受字符和字符串的比较但无任何意义,允许字符串对字符变量赋值,只能得到错误。后面我们会继续对 C 语言的学习。

         欢迎大家一起来学习 C 语言,可以加我QQ:243343083。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:C之单引号和双引号(十三)-创新互联
转载来于:http://cdxtjz.cn/article/degicp.html

其他资讯