#include <stdio.h>
main()
{
int a;
int b;
char c;
int d;
printf("Podaj a");
scanf("%d",&a);
printf("Podaj b");
scanf("%d",&b);
printf("Podaj rodzaj operacji +,-,*,/\n");
scanf("%s", &c);
// printf("\n %d",a);
switch(c)
{
case '1':
{
d=a+b;
}break;
case '*':
{
d=a*b;
}
break;
case '/':
{
d=a/b;
}break;
case '+':
{
d=a+b;
}break;
case '-':
{
printf("Cos");
d=a-b;
}break;
default : printf("\n cos nie tak");
}
printf("\nWynik=%d", d);
printf("\n");
}
Jeśli zmienię położenie wczytania znaku pomiędzy wczytanie liczb jest wszystko dobrze.
Jeśli natomiast skompiluje to w takiej postaci wyświetla wartość zmiennej a.
Ok ale powiedz dlaczego wczytujesz char jako string, z tego co pamiętam, to w buforze nieraz mogą zostać śmieci.
W wariancie jaki nie działa spróbuj wyświetlić to c jako char.
Sprawdzałem jak się zachowuje w tym kodzie scanf("%c", &c); i przed podaniem znaku jeszcze wywala "cos nie tak" i kończy działanie.
Dokładnie nie pamiętam jak to wyglądało w C gdyż nie piszę w nim od kilku lat, ale przy %1s wszystko działa jak powinno, przynajmniej u mnie.