新手关于字符常量的疑问。
c语言吧
全部回复
仅看楼主
level 4
梅影萍踪 楼主
#include<stdio.h>
main()
{
int ch=37;
printf("%c,%d\n",ch,ch);
ch="A";
printf("%c,%d\n",ch,ch);
}
为什么,编译的时候不报错?字符常量不是只能用单引号吗?只有字符串采用双引号吗?
2012年09月19日 08点09分 1
level 12
嗯 所以你明白了 不是说编译通过代码就没有问题 代码有问题 有时候 也是可以编译通过的
祝贺LZ 这是一个很重要的道理啊
2012年09月19日 09点09分 2
[啊!]
2012年09月19日 12点09分
level 8
楼主用的是什么编译器啊?
ch="A"; // 这一句有语法错误
就算你用的编译器不报错,也不能写这样的语句。
"A"应该是一个地址,这个地址是指向字符串"A"的。比如:
char *str;
int i;
str = "A";
i = (int)"A";
str的值是字符串"A"的地址。i的值也是字符串"A"的地址。但i获得的值是经过强制类型转换的,结果取决于你的编译器中int类型的位数,地址的位数。就是说,语句i = (int)"A";是把一个指针值赋给一个整型变量。

2012年09月19日 09点09分 3
vc++6.0 受教了。高手,不胜感激sho。[傻笑]
2012年09月19日 12点09分
C++对类型比较严格 这个就是一个 ERROR ! C语言应该只是一个warning 不算语法错误
2012年09月19日 13点09分
1