这里是第二个选项
事实证明,在第一次赋值之后,这些变量都指向同一个内存位置。
if(firsttime) { backup = StringVal;
我想知道这是哪家公司的产品。
这里有一个例子
extern string StringVal = "string"; string backup = ""; bool firsttime = true; int init() { Print("========================="); Print("StringVal=",StringVal," backup=",backup); if(StringVal != backup){ if(firsttime) { backup = StringVal; Print(" First Call ===> backup = StringVal"); } Print("StringVal=",StringVal,"< > backup=",backup); } firsttime = false; } int start() { }
wlad:
如果我以专家的身份进行编译
那么当我改变StringVal时,备份就会立即改变。
而最后一个Print不叫
问题出在哪里?
好吧,你手动改变StringVal,init就会立即工作,这就对了 。
很明显,init()是有效的
问题是,2.变量的更新是独立于其他条件的
没有更新的条件--但更新发生了!"。
当你改变StringVal时,同时将firsttime改为false
是的,这一切都很清楚
问题是,2.无论其他条件如何,该变量都会被设置。
始终如一
严重问题
这里有一个类似的例子
第一个变量的值只传递给第二个变量一次,第二个变量的值在程序的进一步执行 中不应改变。
但每当第一个变量被改变时,第二个变量的值也会改变,这 不应该 是
extern string Value = "O"; string temp_=""; bool firsttime=true; int start() { string txt=StringConcatenate( " Value: ",Value,"\n", " temp_: ",temp_,"\n", " firsttime: ",firsttime); if(firsttime) { temp_=Value; firsttime=false; } // значение присваевается тольо ОДИН раз Print(txt); Comment(txt); }
而且问题只发生在字符串 类型的变量上
对于其他类型的产品没有问题!
如果我以专家的身份进行编译
那么当我改变StringVal时,备份就会立即改变。
而最后一个Print 不叫
问题出在哪里?