多个声明中的第二个int总是设置为1吗?
在
this Code Golf post年,有一个说法是“定义中的第二个变量总是设置为1”,这是一个格式正确的一行:
int i=-1,c,o,w,b,e=b=w=o=c; 除了我以外,除了c自动为1之外,所有的设置都为1. 我以为我知道一些C,认为这是非法的(是UB,如果任何东西在随机堆栈内容中). C真的把c设置为1吗? 解决方法
我是CodeGolf的OP.看来我只是一个打字错误,我打算说
int i = -1,e = b = w = o = c = 1; 这样,第二个定义的int始终设置为1,其他定义的int可以设置为1.令人困惑的是,我原来把下一个变量(L = 3)只是l(未定义),而且我将所有其他变量设置为e = b = w = o = c =(L = 3);在我心目中,将L设置为3,对于(1)返回真,然后将其余值设置为1. 稍后的几个测试我意识到这只是将它们全部设置为3,只能使用我用来测试我的代码的特定字符串.所以我删除它们,并将其改为只是L = 3硬编码,其他则为e = b = w = o = c = 1; L = 3.在某些时候,我必须按下cmd z一次太多次,删除“=”和“1”,所以我刚刚留下e = b = w = o = c ;.由于这个一致的未定义的性质(至少在我的IDE上),它总是将它们定义为0,因此该bug没有被注意到. 现在我已经纠正了,由于这个帖子,字节长度是相同的,不需要任何这个棘手的e = b = w = o = c = 1代码,我只想到字节长度是不同的,因为当我将我的功能复制粘贴到一个字节计数器,它显示它是2个字节较小(我不知道我只是一个打字错误,缺少2个字节). 我的IDE总是将这些变量定义为0.我的代码被设计为与所有被定义为1的变量一起工作,它的工作原理w / 0是巧合的.也只是因为它发生在我的IDE并不意味着它会在别人,虽然我已经测试了几个IDE现在在线,并运行许多循环,它似乎总是返回0.无论如何,我还更新我的原始代码将它们设置为1,因为它应该是(为我的程序添加2个字节). 感谢大家的投入 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |