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
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分