新手程序改错
#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)来输出它的结果是肯定不对的。
希望会对你有帮助