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);
View Code
==> 结果:123

 2、++ 和 -- (一元运算符)

  ++:有前++ 和 后++ 之分

     当给变量单独使用++操作时,不管时前++ 还是后++:其目的都是给变量自身的值加上1

1             int number = 10;
2             //1、后++
3             number++;
4              Console.WriteLine(number);  //==> 11
5             //2、前++
6             ++number;
7             Console.WriteLine(number);  //==> 11
View Code

               当该运算符参与表达式运算时,就需要考虑到前+还是后+之分。

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
View Code

     --:和 ++ 的原理时一样的,不同就在于 -- 是将变量自身的值减去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    
View Code

分析:++ / -- 是一元运算符 ,+ - * / % 是二元运算符。一元运算符的优先级要比二元运算符的优先级高。在表达式中,如果同时存在一元运算符和二元运算符要先计算一元,在计算二元

练习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();
View Code

4、++ 和 a= a+1 的效率比较

a=a+1. 先取a的值,放到加法器中,把1放在加法器中,然后计算出结果,放在一个临时变量中,再把结果赋值给a。

a++, 取a的值和1放到加法器中,计算结果后直接赋值给a。

也就是后者少了一步。所以效率略高。

不过现在的编译器都做过优化。

a++ a+=1 a=a+1

这三个表达式效率是一样的

 

 

  

posted @ 2017-08-29 23:34  会编程的厨子  阅读(194)  评论(0编辑  收藏  举报