ACM水仙花数请教

#include<stdio.h> void main() { int b, l, c, i; int a[] = {1, 153, 370, 371, 407}; while (scanf("%d%d", &b, &l) != EOF) { c = 0; for (i = 0 ; i < 5 ; i++) { if (a[i] >= b && a[i] <= l) printf(c++ ? " %d" : "%d" , a[i]); } printf(c ? "\n" : "no\n"); } }这个程序是我在做ACM水仙花数的时候在网上偶然看到的,看到这种方式就有种疑问这算不算是违规的。。。。
还有就是红色标注的 c++? 和 c? 怎么看不懂 和 " %d" : "%d" 这个三个是什么意思 。。。
Thank you
