微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多个声明中的第二个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个字节).

感谢大家的投入

原文地址:https://www.jb51.cc/c/112051.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐