Logica está certa,mas programa não compila

#include <stdio.h>
#include <math.h>

int main(void) {
  double n1,n2,resultado;
  char operador;
  
  printf("Digite o primeiro numero:");
  scanf("%d",n1);
  
  printf("Digite o segundo numero:");
  scanf("%d",n2);
  
  printf("Digite o operador:");
  scanf("%c",operador);
  
  if operador = '+' then
    resultado := (n1 + n2);
  else
    if operador = '-' then
      resultado := (n1 - n2);
    else
      if operador = '/' then
        resultado := (n1 / n2);
      else
        if operador = '*' then
          resultado := (n1 * n2);
  
  printf("%d",'O resultado é:'resultado);
}

Como faço para o programa executar? e aonde está o erro?

Comparação é com == e atribuição é com =.

O que o compilador “disse” pra você?

A parte dos ifs parece estar totalmente na linguagem Pascal.

Agora já peguei esse código abaixo:

#include <stdio.h>

int main(void)
{
        float n1,
              n2;
        char operador;

        do
        {
            printf("\t\tCalculadora do curso C Progressivo\n\n");

            printf("Operacoes disponiveis\n");
            printf("'+' : soma\n");
            printf("'-' : subtracao\n");
            printf("'*' : multiplicao\n");
            printf("'/' : divisao\n");
            printf("'%%' : resto da divisao\n");

            printf("\nDigite a expressao na forma: numero1 operador numero2\n");
            printf("Exemplos: 1 + 1 ,  2.1 * 3.1\n");
            printf("Para sair digite: 0 0 0\n");


            scanf("%f", &n1);
            scanf(" %c",&operador);
            scanf("%f", &n2);

        

            printf("Calculando: %.2f %c %.2f = ", n1,operador,n2);


            switch( operador )
            {
                case '+':
                        printf("%.2f\n\n", n1 + n2);
                        break;

                case '-':
                        printf("%.2f\n\n", n1 - n2);
                        break;

                case '*':
                        printf("%.2f\n\n", n1 * n2);
                        break;

                case '/':
                        if(n2 != 0)
                            printf("%.2f\n\n", n1 / n2);
                        else
                            printf("Nao existe divisao por 0\n\n");
                        break;

                case '%':
                        printf("%d\n\n", (int)n1 % (int)n2);
                        break;

                default:
                        if(n1 != 0 && operador != '0' && n2 != 0)
                            printf(" Operador invalido\n\n ");
                        else
                            printf(" Fechando calculadora!\n ");
            }

        }while(n1 != 0 && operador != '0' && n2 != 0);

}
#include <stdio.h>

int main(void){

double n1,n2,resultado;
char operador;
printf("\n Digite o primeiro numero:\t");
scanf("%lf", &n1);
printf("\n Digite o segundo numero:\t");
scanf("%lf", &n2);
  printf("\n Digite o operador\t");
scanf("%s", &operador);
  switch (operador){
    case '+': resultado = n1 + n2; break;
    case '-': resultado = n1-n2; break;
    case '*': resultado = n1*n2; break;
    case '/': resultado = n1/n2; break;
    default: printf(" Operador Invalido!\n");
  };
  printf(" O resultado e: %.2lf", resultado);
}

Tópico fechado conforme solicitado.