温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-06 13:02:58 来源:网络 阅读:2884 作者:上帝之子521 栏目:编程语言

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

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

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

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

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

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

#include <stdio.h>

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI