c语言求最小公倍数程序多定义一个字符导致程序不正常运行

正在写c语言程序,是一个求三个数最小公倍数的程序,然后就发现已经写好的程序因为多定义一个int p=1;就不正常运行了

#include<stdio.h>
void main(){
    int a,b,c,x,y;
    printf("请输入三个整数:"); 
    scanf("%d%d%d",&a,&b,&c);
    if(a>b&&a>c){
            x==a;
        }else if(b>a&&b>c){
            x==b;
        }else{
            x==c;
        }
    int i=1;    
    while(1){
        y=x*i;
        if((y%x==0&&y%b==0&&y%c==0)){
            break;
        }
        i++;
    } 
    printf("%d\n",y); 
}


#include<stdio.h>
void main(){
    int a,b,c,x,y;
    printf("请输入三个整数:"); 
    scanf("%d%d%d",&a,&b,&c);
    if(a>b&&a>c){
            x==a;
        }else if(b>a&&b>c){
            x==b;
        }else{
            x==c;
        }
    int i=1;
    int p=1;    
    while(1){
        y=x*i;
        if((y%x==0&&y%b==0&&y%c==0)){
            break;
        }
        i++;
    } 
    printf("%d\n",y); 
}


上面是正常的代码段,下面这个就是多定义一个p,刚学c语言,我觉得多定义一个跟程序运行没有关系,但是就没办法正常输出最小公倍数了,有没有明白人解释一下为什么这样

在if语句中,你将赋值写成判断了,x=a写成x==a了,b和c也一样,先改正这里看看

这两个程序是一样的,并不会因为你加了int p=1;而不一样,程序求最小公倍数本身逻辑就有问题吧。

首先你前面代码片段中的if-else语句中的给x赋值是=吧,不是==,这个定义p和没定义p应该没啥区别