首页 > 自考资讯 > 自考知识

c语言里面单引号和双引号,c语言中单引号与双引号的区别是什么

头条共创 2024-08-06

今天看了《C陷阱与缺陷》''和''的解释。 '' 引起的字符表示一个整数,其整数值对应于编译器使用的字符集中该字符的序列值。

由'' 引起的字符串表示指向未命名数组的起始字符的指针。我对这两个符号很好奇,于是我打开VS2010看看单引号和双引号括起来的字符在内存中是如何存储的。

实验方法非常简单。检查“yes”/“yes”/“ye”/“y”四个字符在内存中的存储格式。这是代码:

int _tmain(int argc, _TCHAR* argv[]){ char test1[]='yes'; int test2='ye'; int test4='y'; x\n', test4); 实验结果如下。

15360292569193cc1e2dfe3~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1723491610&x-signature=bV2tJXJVxZqGhWJNez4vWXIvtHw%3D 根据内存中的存储格式可知,以''组成的字符串是以整数形式存储的,第一个字符被识别为最高位,最后一个字符为最低位四个int 变量按此顺序存储为位。

带''的变量按照第一个字符存储在起始地址,最后一个字符存储在结束地址。

实验结果确认了《C陷阱与缺陷》这个描述,但是如果带“”的字符超过4个字节会怎样呢?运行另一个实验。这是代码:

int _tmain(int argc, _TCHAR* argv[]){ char test1[]='yes'; int test2='ye'; int test4='y'; x\n', test4); int test5('%x\n', test5);}实验结果如下。

15360292569629cba742e1e~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1723491610&x-signature=mpiYuNdLOOz7bmICaimCuATR%2Fsk%3D 实验结果显示字符超过4个字节,超出了int类型的存储能力。编译器报告错误,指出常量字符太多。这有效地通知程序员可能存在符号输入错误,但如果没有超出int 类型的存储容量,则允许接受所有指令而不进行提示。程序中存在误用符号和调试问题的潜在危险。日后会是一件相当麻烦的事情。

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢