Fel*_*bek 9 c declaration definition undefined-behavior variable-declaration
在这篇Code Golf帖子中,声称"定义中的第二个变量始终设置为1",这使得它成为一个格式良好的行:
int i=-1,c,o,w,b,e=b=w=o=c;
Run Code Online (Sandbox Code Playgroud)
据说除了i设置为1 之外的所有内容c都是自动1.
我以为我知道一些C,并认为这是非法的(是UB,如果有任何随机堆栈内容的结果).
C真的设置c为1吗?
我是CodeGolf的OP.似乎我只是有一个拼写错误,我的意思是说
int i=-1,c,o,w,b,e=b=w=o=c=1;
第二个定义的int总是设置为1而其他的可以设置为它.令人困惑的是,我最初接下来的变量(L = 3)只是l(未定义)而我将所有其他变量设置为e = b = w = o = c =(L = 3); 在我看来,将L设置为等于3,为此返回true(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个字节).
感谢大家的投入