参考書に書いてあったのですが、この条件式の意味が判りません!

(c=(j>0)?buf[--j]:getc(fp))!=EOF)


ちなみに
int j;
char buf[100];
FILE *fp です。
特に「?」とか「:」とか判りません。
よろしくお願いします!