为什么这样比较会出问题
想用strcmp对long int 型进行比较,却出了问题
奇怪的是,却不是全部出了问题~~~数据111111111却没有提示输入重复,不知道具体原因……求解
~~~
程序代码:#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN sizeof(Node)
typedef struct Node
{
long int num;
struct Node *next;
struct Node *back;
}Node;
Node *head=NULL;
int n=0;
void insert(Node *p1,Node *p2)
{
if (p1==head)
{
p2->next=head;
p2->back=NULL;
head->back=p2;
head=p2;
return;
}
p2->back=p1->back;
p1->back->next=p2;
p2->next=p1;
p1->back=p2;
return;
}
void fun(long int a)
{
Node *p=head;
Node *p2=NULL;
if (head==NULL)
{
p=head=(Node *)malloc(LEN);
head->next=NULL;
head->back=NULL;
head->num=a;
n++;
return ;
}
while (p->num>a&&p->next)
p=p->next;
if (strcmp(&(char)p->num,&(char)a)==0)//为什么这样比较会出问题???~~~
return ;//然而,改用if (p->num==a)就没事了~~~
n++;
p2=(Node *)malloc(LEN);
p2->num=a;
if (p->num>a)
{
p->next=p2;
p2->back=p;
p2->next=NULL;
return ;
}
insert(p,p2);
}
void print()
{
Node *p=head;
printf("不同的数:\n");
while (p)
{
printf("%ld\n",p->num);
p=p->next;
}
}
int main()
{
long int a[]={11111111,22222222,33333333,33333333,44444444,11111111,22222222};
long int *p=a;
for (;p-a<sizeof(a)/sizeof(long int);++p)
fun(*p);
print();
printf("共有%d个不重复的数字\n",n);
return 0;
}[此贴子已经被作者于2017-1-6 12:08编辑过]









~那个左移8位不是很懂是什么意思,能否解释一下~~
估计也是数据溢出问题~
~~~
感谢大佬指点,我先去测试一下~~