Det afhænger lidt af compileren så vidt jeg har erfaret.
Borland's CPP Builder vil se det som :
if( UIP_TCP_MSS != 0 ){
uip_connr->initialmss = tmp16 > UIP_TCP_MSS; // 1 for sand, 0 for falsk
uip_connr->mss = tmp16 > UIP_TCP_MSS; // 1 for sand, 0 for falsk
}
else{
uip_connr->initialmss = tmp16 > tmp16; // altid 0
uip_connr->mss = tmp16 > tmp16; // altid 0
}
Jeg har haft det problem i min egen kode adskillige gange.
Der mangler et meget vigtigt sæt parenteser for at nå den kode Jacob skrev.
uip_connr->initialmss = uip_connr->mss = (tmp16 > UIP_TCP_MSS)? UIP_TCP_MSS:
tmp16;
Venlig hilsen,
Jens Jakobsen
"Jacob Bunk Nielsen" <spam@bunk.cc> skrev i en meddelelse
news:spamdrop+m3psxs4mwh.fsf@paven.bunk.cc...
> "René Jensen" <rene-jensen ved get2net prik dk> writes:
>
>> uip_connr->initialmss = uip_connr->mss = tmp16 > UIP_TCP_MSS?
>> UIP_TCP_MSS:
>> tmp16;
>
> Det er det samme som:
>
> if (tmp16 > UIP_TCP_MSS) {
> uip_connr->initialmss = UIP_TCP_MSS;
> uip_connr->mss = UIP_TCP_MSS;
> }
> else {
> uip_connr->initialmss = tmp16;
> uip_connr->mss = tmp16;
> }
>
> ... eller med ord: uip_connr->initialmss og uip_connr->mss bliver sat
> til den af UIP_TCP_MSS eller tmp16 der er mindst.
>
> --
> Jacob -
www.bunk.cc
> I can resist anything but temptation.