0%2即将出现1

Nis*_*ant 0 c c++ modulo

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

printf("before modulo r= %d ,ans =%d\n",r/b,ans );
ans=(ans)%2;
printf("after modulo r = %d ,ans =%d\n",r,ans);
Run Code Online (Sandbox Code Playgroud)

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

Gun*_*ica 8

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

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