楼主:
neil987 (R5大小姐-EX人品崩坏)
2020-09-13 00:59:39: https://i.imgur.com/ZXjoMcL.png 有兴趣的人就解这段程式码ㄅ
我这不就来了吗(′・ω・)
稍微做一点解释 如果有错误欢迎指正
#define true false
preprocessor macro
#define 的行为是在编译器之前建立macro 替换掉要所有档案里要替换的文字
以#define true false来说
就是把所有程式码里面的true替换成false
Thread.sleep(24*60*60*1000)
程式休眠24小时
[$[$RANDOM%6]==0]&&rm -rf
Linux指令 这指令是俄罗斯轮盘
$RANDOM会回传 0~RAND_MAX的数字
如果这个数字除以6后余数等于0的话 就会触发后面的 rm -rf指令
rm -rf 就是 删除root资料夹下的所有档案
基本上就是整台电脑GG的意思 所以是一个俄罗斯轮盘的IT梗
alias cd='rm -rf'
alias为linux设定指令别名
cd为linux用来切换资料夹的指令,rm -rf上面有提过
所以上面的指令等于 把cd设定为 rm -rf 的别名
设定后 使用者如果想用cd切换资料夹 就会把root资料夹删光
:(){ :|:& };:
跟linux内的bash有关,俗称fork bomb
简化(?)过后为:
: () {
: | : &
}; :
前面的 :() 意思是定义一个名字为 ":" 的function,此function没有参数
:|: 的意思是执行":"function的regression1并将输出结果pipe到另一个":"的process
也就是执行一次会生出两个":" function
然后"&"为背景执行
";"为 ":" function的定义终止符号
最后的":"就是在函数定义结束后 执行一次 ":" function
执行后会以2^N的速度新增process,会导致占用的CPU与RAM越来越多
最后会瘫痪整个系统,基本上只能重开机处理
typeof NaN
Javascript 的 NaN型态
全名是Not a Number
因为计算机科学的定义,所以在Javascript用typeof去查询NaN的型态的话
会回传 number 型态 但是它是Not-a-Number 有点矛盾
9+"1"==92-"1"
Javascript里的运算子与比较子有明确规定不同型态的值进行运算时的规则
左式 9 + "1" 为 number + string 规范number须转为string
而 string + string = string
因此左式 9 + "1" = "9" + "1" = "91"
右式 92 - "1" 为 number - string 因string不能相减,所以规范string须转为number
而 number - number = number
因此右式 92 - "1" = 92 - 1 = 91
又 "==" 为 一般相等比较子,根据规范:
当string(A)与number(B)一般相等比较时,需做以下转换
ToNumber(A) === B
所以原式: "91" == 91 => ToNumber("91") === 91 => 91 === 91 => true
484很神奇呢(′・ω・)a
HellWorld
通常学习程式第一件事情就是学习如何印出hello world
至于HellWorld嘛......(′・ω・)
0.1+0.2==0.3
这又是Javascript的问题
javascript对于所有number的计算都是采取64bit float型态
且使用的浮点数标准为IEEE 754
0.1转换为二进制的IEEE 754后为 0.0001 1001 1001 1001…
是无限循环的 然而IEEE 754 只能纪录52个尾数
因此存在误差
0.2同理,再转换成IEEE 754后为 0.001 1001 1001 1001…
因此此两数本来就有误差 相加之后 误差就更大了
所以在javascript里面 0.1+0.2==0.3 => false
long long ago;
long long 为int64资料型态
取值范围为-9,223,372,036,854,775,808~9,223,372,036,854,775,807
因此在懂程式的人眼里 这段程式的意思是 宣告一个ago变量 资料型态为 long long
而不懂程式的人眼中 这段话就有很久以前的意思