Chinaunix

标题: 0 和 ' \0' 两个常量的类型和值都相同吗 [打印本页]

作者: liangzhishao    时间: 2010-08-25 10:41
标题: 0 和 ' \0' 两个常量的类型和值都相同吗
<  printf("%u %u\n", sizeof(0), sizeof('\0'));

> 4 4

大家帮我确认一下
作者: lpy_222    时间: 2010-08-25 10:46
第二个4确实挺奇怪的,又被强转为Int了,你可以这样(char)‘\0’,就为1了。再说了,程序中不可能用到sizeof(0)这种,只应该有sizeof(int)
作者: efolzl    时间: 2010-08-25 10:46
0,字面值常量,是int类型的~

'\0',字符常量,应该也是int类型的(不确定,没找到说明)~
作者: hellioncu    时间: 2010-08-25 10:47
似乎以前讨论过,C和C++处理不同
作者: liwangli1983    时间: 2010-08-25 10:52
'\0'字符字面量,C中为int ,C++中为char
作者: zhuqing_739    时间: 2010-08-25 10:53
其实0和'\0'的值相同,都是0,不信,直接打印出来看看就知道了
printf("%d\n%d\n",0,'\0');
作者: davelv    时间: 2010-08-25 11:04
C表达式中的字符字面常量如果没有强制声明类型,则会被扩展为int进行计算
作者: pandaiam    时间: 2010-08-25 11:05
C表达式中的字符字面常量如果没有强制声明类型,则会被扩展为int进行计算
davelv 发表于 2010-08-25 11:04



    正解.顶啊.
作者: liangzhishao    时间: 2010-08-25 11:12
'\0'本身就是一个整数,是整型(int)。

之所以加上单引是为了和本地字符集中的空值相对应。

但是这个空值究竟是不是0呢,那就要看是什么字符集了,不过ascii码空是0。
作者: flw    时间: 2010-08-25 11:31
本帖最后由 flw 于 2010-08-25 11:36 编辑

一个弱类型语言,天天讨论类型有意思麽。
一个没有明确提出上下文概念的语言,天天讨论上下文有意思麽。
作者: davelv    时间: 2010-08-25 11:34
回复 10# flw


  还没有达到手中无剑的水平。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2