首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新手程序改错解决方法

2012-03-17 
新手程序改错#includestdio.hvoid main(){int a5int b5char *phelloworldchar *qhelloworld

新手程序改错
#include<stdio.h>
void main()
{
int a=5;
int b=5;
char *p="helloworld";
char *q="helloworld";
if(p==q)
printf("%d\n",a==b);
else
printf("%d\n",a!=b);
}

[解决办法]
字符串常量在常量区,只有一个实体,你比较的是地址,表明两者地址相同,是一个东西

printf("%d\n",a==b);
 改为 printf("a==b\n");
 
[解决办法]
gcc编译通过
常量字符串是在堆上分配的,所以p、q是相等的,但是比较字符串最好用strcmp/strncmp之类的进行比较,那样才是比较的字符串的内容。
写程序不要只图个结果“正确”,要确保逻辑上也是正确的,否则你的程序在不同的环境下就会得到不同的结果。
a==b在纯C的环境下返回的是个int型的整数(0/1),但是在有的环境下,它会是个bool类型(true/false),在这种情形下用打印整数的方式(%d)来输出它的结果是肯定不对的。
希望会对你有帮助

热点排行