简单的问题有一点看不懂

#include<stdio.h>
struct rank

{char *rid;

 int sc[3];

};

char fun(struct rank *t)

{int i,total=0;

for(i=0;i<3;i++)

total=total+t->sc[i];

t->rid=total>250?"y":"n";

} ...................................

这个t->rid=total>250?"y":"n"; 是什么意思呢?

t -> rid = total> 250 ?  "y" : "n";  

大概意思是  total 如果大于 250 的话 ,就是真,返回y的地址,否则返回 n的地址

char * rid = "y"; 或者 char * rid  = "n";

看来你应该明白指针和结构体(否则不会只问这一句),而是不明白三目运算符。

三目运算符,顾名思义,有三个表达式参与运算。语法如下:

condition ? A : B

其中,condition是一个条件,A和B是任意类型的值。如果condition条件成立,表达式的值就是A,反之就是B。相当于:

if (condition) A;

else B;

所以,t->rid=total>250?"y":"n";相当于:

if (total > 250) t->rid = "y";

else t->rid = "n";

当total>250时,结构体t里面的rid字符串就等于y。否则等于n。这是一个简单的三目运算符