码迷,mamicode.com
首页 > 编程语言 > 详细

辛巴学院-Unity-剑英陪你零基础学c#系列(三)计算与类型

时间:2015-09-24 16:18:48      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

草稿中,完稿可以问我要doc原稿,不要转草稿

?

辛巴学院:正大光明的不务正业。

技术分享

中秋节快乐,每逢佳节倍思亲,尤其是那素未谋面的老婆,对吧,屌丝们。

?

今天我们来探索一下C#里面奇怪的计算,奇怪的类型。

奇怪的计算

当我刚刚接触计算机编程的时候,一切在我看来都是奇怪的。

i++
i=i+1
i==i+1

这都是些什么鬼?

机器语言是图灵机模式的,那玩意不是人类语言,是关于操作寄存器的。

附:图灵机视频地址测试版:

http://v.youku.com/v_show/id_XMTM0MDg0NjUxMg==.html?from=y1.7-1.2

高级语言是模拟人类语言的,可是上面那些鬼用人类语言完全看不懂呢。

没人能看懂,以自然语言的角度来说做了很多的省略。

此处的等号和数学的等号全无关系,而是替代自然语言的一个简化符号

不仅仅是等号,编程语言中出现的所有符号,他其实都是想说一句话,不一定和你数学中熟悉的那个符号表达相同含义

i++ (他想表示一句话,让i这个变量的值增加1)
i=i+1(他想表示一句话,让i这个变量的值改变,改变为i+1)(这里初学会很纠结我们等下来解释)
i==i+1(他想表示一句话,判断i 是否和 i+1 相等)

你要时刻提醒自己,这不是数学,这不是数学,这不是数学

高级语言中,所有的语句,都想表示一句话

i=i+1,表示的这句话是不是有点奇特呢?让i这个变量的值改变,改变为i+1。他们的时空观到底是个what?放心,这不是黑客帝国。

我们的时空观还在牛顿经典物理水平。(初中物理水平)

前面讲过:"代码是棵树,执行有顺序"。这就是个顺序的问题。他相当于先拿一个临时变量j=i+1,这就没有时空困扰了,然后再让i=j。

并不是时空观上有什么奇怪,而是这句话隐含了一个中间出现临时变量的机制。

初学者可能会在这里绕圈圈绕一会儿,没关系,多绕一下。

=这个符号,是"让谁的值改变为xxx"的代表符号,而不是数学中的等号

?

3

2

1

绕清楚了么?

对加减乘除与数值类型来说,倒是和数学意义一致,不用特别说明

然后出现的奇怪计算是这个:i==i+1

这个叫做逻辑运算,完整的写法应该如下:bool b =i==i+1; 完整的想要表示的自然语言是:让b的值改变为是或否, i是否与i+1相等。

所有的逻辑运算得到的结果只有是或否,bool型 专门用来表示这个 是 或 否。Int型专门表示整数。

逻辑类型最常用的场合是配合if做选择逻辑,If(i>2)隐藏了一些细节,完整的写法是

bool b = i>2;
if(b)
{

}

c#将所有的需要逻辑表达式的场合,统一为使用bool类型的参数。

也就是说c#中所有使用逻辑运算的场合,均可如上面那样展开写一个明确的bool变量。

当你写到这些问题完全不会绕住,完全不会弄错,你可以完全忽视这一切。
现在,假如你写代码写到逻辑运算绕住了,那你可以把他展开写,更容易看懂。

只要你始终牢记所有的运算符都是想说一句话,那就不会陷入这个陷阱中。

其实不止是运算符,高级语言我们说过,整个就是颗树,每一句都是想说一句话,一句人类的话,只是太多的简化,说的不那么好。

C#中还有一类特殊的计算,位运算,这个是2进制的范畴,在逻辑清晰要求剩余内存要求的现下,位运算出镜率已经接近于零,所以我们不提这个部分。

奇怪的类型

辛巴学院-Unity-剑英陪你零基础学c#系列(三)计算与类型

标签:

原文地址:http://www.cnblogs.com/crazylights/p/4835382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!