0%2即将出现1

时间:2014-03-03 22:12:14

标签: c++ c modulo

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

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

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

1 个答案:

答案 0 :(得分:8)

你的第一个打印不打印ans,因为你的b是一个long long int,所以r / b是一个long long int,它有64位,你的第一个打印将打印第一个32位作为r和接下来是32位作为ans。你的ans从来都不是0。

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