C#语法基础之第三节
1、类型转换:
1-1:对于类型兼容的两种类型之间进行转换:
大转小:强制类型转换 (int => int(double))
小转大:自动类型转换 (doubl => int )
1-2、对于类型不兼容的两种类型之间进行转换:
前提:要使用Convert类进行转换的值和要转换得到的目标值之间是可以进行转换的
string => dounle || string =>int 等等
1 string str= "123"; 2 int rst_num = Convert.ToInt32(str); 3 Console.WriteLine(rst_num); 4 Console.ReadKey(true);
2、++ 和 -- (一元运算符)
++:有前++ 和 后++ 之分
当给变量单独使用++操作时,不管时前++ 还是后++:其目的都是给变量自身的值加上1
1 int number = 10; 2 //1、后++ 3 number++; 4 Console.WriteLine(number); //==> 11 5 //2、前++ 6 ++number; 7 Console.WriteLine(number); //==> 11
当该运算符参与表达式运算时,就需要考虑到前+还是后+之分。
1 //前++ 是变量先加1 在将运算后的值参与运算 2 int result = 10 + ++number; 3 console.writeline(result); ==> 21 4 console.writeline(number); ==> 11 5 6 //后++ 是先将变量的值参与运算 在将变量自身的值加1 7 int result = 10 + number++; 8 Console.WriteLine(result); //==> 20 9 Console.WriteLine(number); //==> 11
--:和 ++ 的原理时一样的,不同就在于 -- 是将变量自身的值减去1
3、++ 、-- 练习题
(1)
1 int a = 5; 2 int b = a++ + ++a * 2 + --a + a++; 3 Console.WriteLine(a); //=>7 4 Console.WriteLine(b); //=>31
分析:++ / -- 是一元运算符 ,+ - * / % 是二元运算符。一元运算符的优先级要比二元运算符的优先级高。在表达式中,如果同时存在一元运算符和二元运算符要先计算一元,在计算二元
练习1详细解析:
注意:为了方便描述,解析中仅将加号两边的表达式称为 运算数
a的初始值是5,第一个运算数是a++,后加操作(先参与运算,自身在加1),那么参与表达运算的值就是5 ,此时变量a的值等于原来的值加上1 为 6;第二个运算数时 ++a * 2,先加(先自身加1,在参与运算),那么此时变量a的值就是 6+1 为7 ,参与表达式运算的值就是 7 * 2;第三个运算数是 --a ,先减(先自身减1,在参与运算),那么此时 a的值就是 7 -1 为6,那么参与运算的值为 6 ,最后一个运算数是 a++,后加,(先参与运算,在自身加1),那么参与运算的值就是 6 ,a的值就为 6+1 = 7
(2)
1 int umber = 3; 2 int result = ++number + ++number - number-- + --number * 2; 3 // result 4 + 5 - 5 + 3 *2 <== 参与运算的值 4 // number 4 5 4 3 <== number存储的值 5 Console.WriteLine(number); // ==>3 6 Console.WriteLine(result); // ==>10 7 Console.ReadKey();
4、++ 和 a= a+1 的效率比较
a=a+1. 先取a的值,放到加法器中,把1放在加法器中,然后计算出结果,放在一个临时变量中,再把结果赋值给a。
a++, 取a的值和1放到加法器中,计算结果后直接赋值给a。
也就是后者少了一步。所以效率略高。
不过现在的编译器都做过优化。
a++ a+=1 a=a+1
这三个表达式效率是一样的