0%2 coming out to be 1

0%2 coming out to be 1

本文关键字:be to out coming      更新时间:2023-10-16

我遇到了一个奇怪的问题。这是我正在使用输入和输出的代码的链接。我遇到问题的片段发布在这里

printf("before modulo r= %d ,ans =%dn",r/b,ans );
ans=(ans)%2;
printf("after modulo r = %d ,ans =%dn",r,ans);

可以看到,在执行第 24 行之前的第二次迭代中,ans = 0,之后它变为 1 而不是保持 0 为 0%2=0 。我真的无法理解这个问题

你的第一次打印不会打印 ans,因为你的 b 是一个长整型,所以 r/b 是一个长整型,它有 64 位,你的第一次打印会将前 32 位打印为 r,接下来的 32 位打印为 ans。你的 ans 从来都不是 0。

下次,请发布您的代码而不是链接它。

相关文章: