Problem z programem w C - segmentation fault 11


(Lord218) #1

Witam.

Problem dokładnie jak w temacie. Mam taki program:

#include 

#include 

#define parzysta(a) (a%2==0)?1:0



int main() {


int x,liczba;

scanf("%d",x);

liczba=parzysta(x);

printf("%d",liczba);



}

no i po skompilowaniu, odpaleniu i podaniu liczby wyskakuje - segmentation fault 11, albo jak robię to w devie, to wyświetla komunikat, że program przestał działać. Spróbowałem odpalić na innym kompie i działa, a na tym, na którym pisałem nie.

Co to może być?

Proszę o odpowiedź i pozdrawiam.


(kostek135) #2

scanf przyjmuje adres

PS nie używaj takiego define’a jak w a znajdzie się coś o niższym priorytecie od % dostaniesz nieoczekiwany (bo trudno powiedzieć błędny) wynik.


(Lord218) #3

O no jak zwykle ślepota ze mnie. Dzięki śliczne, a co do tego define’a to nauczyciel nam tak pokazał he he. :wink:


(kostek135) #4

Ok, to uświadom go, że

printf("%d", parzysta(2 + 2));

zwróci 0. Jak ktoś nie wie jak coś działa nie powinien tego używać.


([alex]) #5

wystarczy:

#define parzysta(a) ((a)%2==0)