C语言陷阱「词法陷阱 之字符与字符串」

C语言陷阱【词法陷阱 之字符与字符串】

 字符与字符串

C语言中的单引号' ',与双引号" ",含义不同。

用单引号引起的一个字符实际上表示一个整数,该整数值为该字符在编译器采用的字符集中的序列值。所以,对于采用ASCLL字符集的编译器,'a'对应的整数值为97(十进制)或0141(八进制)。如:

#include

#include

#include

int main()

{

int a=0;

Int b=0;

char p='a';

char s[20];

a=p;

b=p+1;

itoa(a, s, 2);

printf("'a'二进制 --> %s ", s);

printf("'a'八进制 --> %o ", a);

printf("'a'十进制 --> %d ", a);

printf("'a'+1十进制 --> %d ", b);

}

该程序输出为:

用双引号引起的字符串,代表的是一个指向无名字符数组的起始字符的指针,该数字符数组的内容为,双引号之间的字符加一个二进制值为0的字符('')。

如:char * p="abcde";

与 char p[ ]={'a','b','c','d','e',''};

是等效的;

小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:487875004适合在校大学生,小白,想转行,想通过这个找工作的加入。裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程

因为用单引号括起来的一个字符代表一个整数,而用双引号括起来的一个字符代表一个指针,如果两者混用,那么编译器的类型检查功能会检查到这样的错误。如:

Char * p1='u';

在编译时会报错,因为'u'代表一个整数值,并不是一个指针。

然而某些编译器对函数的参数并不进行类型检查,特别是printf函数的参数类型。因此如果把printf(''hello world"),误写为printf('hello world'),则会产生难以预料的错误!

原文链接:https://www.jianshu.com/writer#/notebooks/28627489/notes/32998137

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏诸葛青云的专栏

简述在C语言中, “字符”与“字符串”之间的区别

在C语言中,“字符”与“字符串”之间,是有区别的。这一篇文章中,我们将介绍一下,在C语言中的“字符”与“字符串”,它们之间的区别。

25330
来自专栏技术小站

深入理解Java的接口和抽象类(转)

  对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很...

8020
来自专栏工科狗和生物喵

【计算机本科补全计划】Java学习笔记(七) 常用的类

正文之前 没辙,为了我的一个完整的教程,不得不忍痛继续写一些简单的东西,虽然这些网上都有,但是要纳进我的体系还是需要写进来的,以后自己要看了, 直接就可以看到了...

36860
来自专栏Java帮帮-微信公众号-技术文章全总结

第十一天 面向对象-接口多态【悟空教程】

16740
来自专栏Java帮帮-微信公众号-技术文章全总结

【Java提高二】三大特性-继承

【Java提高】三大特性-继承 在《Think in java》中有这样一句话:复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够...

35790
来自专栏用户2442861的专栏

c++ 11 新特性

赖勇浩(http://laiyonghao.com) 声明:本文源自 Danny Kalev 在 2011 年 6 月 21 日发表的《The Bigges...

13110
来自专栏java一日一条

Java有值类型吗?

有人看了我之前的文章『Swift 语言的设计错误』,问我:“你说 Java 只有引用类型(reference type),但是根据 Java 的官方文档,Jav...

13920
来自专栏cmazxiaoma的架构师之路

Java数据结构与算法(4) -冒泡排序

19450
来自专栏编程

自学Python笔记(二)

作为最最基础的初学者,尤其是面对中小学生学习Python我想大概了解一下Python,能编个小程序,能看懂一般的程序就可以,如果想深一步的学习还是需要静下心来好...

24570
来自专栏机器学习和数学

[编程经验] Python之collections模块

collections模块是一个不用不知道,一用就上瘾的模块。因为它提供了几种非常方便的数据结构和方法,在有些情况下特别好用。今天给大家总结一下其中的Order...

35940

扫码关注云+社区

领取腾讯云代金券