# C# 语法练习(3): 运算符

基本: .  ()  []  x++  x--  new  typeof  checked  unchecked  ->  ::



using System;

class MyClass
{
static void Main()
{
double d;
d = 14 / 4;
Console.WriteLine(d);    //3
d = 14 / 4.0;
Console.WriteLine(d);    //3.5
d = 14.0 / 4.0;
Console.WriteLine(d);    //3.5
d = 14.0 / 4;
Console.WriteLine(d);    //3.5

Console.WriteLine();

float f;
f = 14 / 4;
Console.WriteLine(f);    //3
f = (float)(14.0 / 4.0); /* 默认返回 double, 因而需要转换 */
Console.WriteLine(f);    //3.5

Console.WriteLine();

int i;
i = 14 / 4;
Console.WriteLine(i);    //3
i = (int)(14.0 / 4.0);
Console.WriteLine(i);    //3
i = 14 % 4;
Console.WriteLine(i);    //2

}
}



++ -- 可以对 double 类型
using System;

class MyClass
{
static void Main()
{
double f = 1.5;
f++; Console.WriteLine(f); //2.5
f--; Console.WriteLine(f); //1.5
Console.WriteLine(++f);    //2.5
Console.WriteLine(--f);    //1.5

}
}



?:
using System;

class MyClass
{
static void Main()
{
int n, a=11, b=22;

n = a > b ? a : b;
Console.WriteLine(n); //22
n = a < b ? a : b;
Console.WriteLine(n); //11

}
}



??
using System;

class MyClass
{
static void Main()
{
int? x = null;        /* 给变量赋 null 的写法, 一般用于数值和布尔类型 */
int y;

y = x ?? -1;          /* 如果 x 为 null 将返回后者, 反之返回 x */
Console.WriteLine(y); // -1

x = 9;
y = x ?? -1;
Console.WriteLine(y); // 9

}
}



=>
using System;
using System.Linq;

class MyClass
{
static void Main()
{
int n1, n2;

int[] ns = {22, 333, 4444, 9};
n1 = ns.Max(num => num);
n2 = ns.Min(num => num);
Console.WriteLine("{0}, {1}", n1, n2);       //4444, 9

string[] ss = {"aaa", "bbbb", "ccccc", "dd"};
n1 = ss.Max(str => str.Length);
n2 = ss.Min(str => str.Length);
Console.WriteLine("{0}, {1}", n1, n2);       //5, 2

}
}



& | ^ !
using System;

class MyClass
{
static void Main()
{
bool b;

b = true & true;   Console.WriteLine(b);  // True
b = true & false;  Console.WriteLine(b);  // False
b = false & false; Console.WriteLine(b);  // False

b = true | true;   Console.WriteLine(b);  // True
b = true | false;  Console.WriteLine(b);  // True
b = false | false; Console.WriteLine(b);  // False

b = true ^ true;   Console.WriteLine(b);  // False
b = true ^ false;  Console.WriteLine(b);  // True
b = false ^ false; Console.WriteLine(b);  // False

b = !true;         Console.WriteLine(b);  // False
b = !false;        Console.WriteLine(b);  // True

}
}



&& ||; 在条件判断时, 应尽量使用 &&、|| 而不是 &、|; 因为后者总是要计算出结果, 因而会慢.
using System;

class MyClass
{
static void Main()
{
bool b;

/* 在前两种情形下, && 不再判断其后的值 */
b = false && true;  Console.WriteLine(b);  // False
b = false && false; Console.WriteLine(b);  // False
b = true && true;   Console.WriteLine(b);  // True
b = true && false;  Console.WriteLine(b);  // False

/* 在前两种情形下, || 不再判断其后的值 */
b = true || true;   Console.WriteLine(b);  // True
b = true || false;  Console.WriteLine(b);  // True
b = false || true;  Console.WriteLine(b);  // True
b = false || false; Console.WriteLine(b);  // False