在对变量赋值时如果是a=a+3这样的,有种简单的形式
a+=3
而对于+1,-1还可以写作a++,a--这种形式
加后赋值,按位与后赋值,乘方后赋值
string a="";
a+="12";//string的加后赋值
bool t=true;
t&=true;
int i=18;
i^=2;
i%=4;
&&=不可用
赋值不止是操作语句,他同时具有返回值
int a;
Console.WriteLine(a=12);
赋值号左边只能是变量
int a,b;
a=4+b=15;
如需使用此语句需加括号
int a,b;
a=4+(b=15);
自增,自减
int a=0;
a++;
Console.WriteLine(a);
a++和++a单独做赋值使用没有区别
区别在于返回值
a++是先获取a的值再做自增
int a=0;
Console.WriteLine(a);
Console.WriteLine(a++);
Console.WriteLine(a);
++a则先自增再获取a的值
int a=0;
Console.WriteLine(a);
Console.WriteLine(++a);
Console.WriteLine(a);
测试按位与和逻辑与
有了a++就可以容易的观察出&的全部运行和&&的短路运行了
int a = 0;
if (false & ++a > 0) {
}
Console.WriteLine(a);
a = 0;
if (false && ++a > 0) {
}
Console.WriteLine(a);
三目运算符
int a=0;
Console.WriteLine(a%2==0?"双数":"单数");
三目运算符会判断[?]左边的bool值,如为true则返回[:]左边的值,如为false则返回右边的值
类似于if-else
但不会判断不可达代码
三目运算符是一个表达式
因此不能单独放置
单独放置的三目运算符等效于
12;
三目运算符属于表达式,所以是有类型的。
这要求待返回的值需要能转化为同一个类型。并在编译器里视作这个类型
如果表达式里没有变量成分就是常量
你可以同时执行操作语句
扫描二维码关注公众号,回复:
11893308 查看本文章
int a=0;
a=true?a=12:a=13;
赋值语句会从右到左计算,但三目运算符是从外到内计算的,不会在判断前先算结果
int a=0;
a=true?a++:a++;
Console.WriteLine();
三目运算符的连用和嵌套
三目运算符的连用:a=b?c?d?1:2:3:4
此用法类似于
if (b)
{
if (c)
{
if (d ){ a = 1; }
else { a = 2; }
}
else { a = 3; }
}
else { a = 4; }
最右侧值对应最左侧bool的false
右二对应左二bool的false
最内侧的值对应bool的全部true
嵌套不讲