#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。这是一个简单的三目运算符