有人可以向我解释这一小段代码吗?

Ser*_*pia 1 c# conditional

bool stop = false;
           int f1 = 1;
           int f2 = 2;
           int f3 = 0;
           int sum = 2;
           while (!stop)
           {
               f3 = f1 + f2;
               sum += f3 % 2 == 0 ? f3 : 0; //THIS ONE
               stop = f3 > 4000000 ? true : false;//AND THIS ONE.
               f1 = f2;
               f2 = f3;
           }
Run Code Online (Sandbox Code Playgroud)

什么是条件运算符?这是我第一次见到这样的东西.

cdi*_*ins 14

这条线:

sum += f3 % 2 == 0 ? f3 : 0; //THIS ONE
Run Code Online (Sandbox Code Playgroud)

是相同的:

if (f3 % 2 == 0)
  sum += f3;
else
  sum += 0;
Run Code Online (Sandbox Code Playgroud)

当然可以改写为

if (f3 % 2 == 0) sum += f3;
Run Code Online (Sandbox Code Playgroud)

和线

stop = f3 > 4000000 ? true : false;//AND THIS ONE.
Run Code Online (Sandbox Code Playgroud)

是相同的

if (f3 > 4000000)
   stop = true;
else 
   stop = false;
Run Code Online (Sandbox Code Playgroud)

或者更好的是:

stop = f3 > 4000000; 
Run Code Online (Sandbox Code Playgroud)


Dav*_*ble 5

表达方式

x = c ? a : b;
Run Code Online (Sandbox Code Playgroud)

相当于

if (c)
    x = a;
else
    x = b;
Run Code Online (Sandbox Code Playgroud)

还有,声明

stop = f3 > 4000000 ? true : false;
Run Code Online (Sandbox Code Playgroud)

是完全冗余的,可以简化为

stop = (f3 > 4000000);
Run Code Online (Sandbox Code Playgroud)

(为了清晰起见,增加了Paretheses.)