C#的奇怪现象

写代码的时候遇见了这个奇怪的错误,代码如下

value = mask_value(100);
value_masker = UnityEngine.Random.Range(1, 999);
    
int mask_value(int v){
    return v ^ value_masker;
}  

void add_value(int a) ...

初始值为100,但运行代码后显示不为100,但对value之后的操作都正常,比如:

初始为133,unmask之后-10在mask并存入value变量

发现value为123

最后发现value_masker在函数mask_value第一次运行后才初始化,导致第一次的mask值和后面都不一样。

然而C#和unity面对这种情况,竟都没有报segmentation fault,实在是令人唏嘘不已。

Leave a Reply