【发布时间】:2014-03-02 15:40:52
【问题描述】:
我正在尝试编写一些简单的代码来验证数组中每个数字的位数,但我遇到了一些奇怪的行为。
数组中的前 3 个数字在 while 循环中被评估为 false,这意味着 (120/1)%10 等于 0,这不应该是 true 或者这里有其他错误。
你有什么想法吗?该算法在数组中的第三个数字之后按预期工作。
提前感谢您的建议。
int main(){
int nums[SIZE] = {120,210,3,4375,54443};
int i;
for (i = 0; i < SIZE; ++i){
printf("Var i inside FOR: \t%d\n", i);
printf("Var nums i inside FOR: \t%d\n", nums[i]);
int wtest = 1;
printf("Var wtest inside FOR: \t\t%d\n\n", wtest);
while (((nums[i] / wtest)%10) != 0){
wtest = wtest * 10;
printf("Var wtest iside while: \t\t\t%d\n\n", wtest);
}
}
getchar();
return 0;
}
输出:
Var i inside FOR: 0
Var nums i inside FOR: 120
Var wtest inside FOR: 1
Var i inside FOR: 1
Var nums i inside FOR: 210
Var wtest inside FOR: 1
Var i inside FOR: 2
Var nums i inside FOR: 3
Var wtest inside FOR: 1
Var wtest iside while: 10
Var i inside FOR: 3
Var nums i inside FOR: 4375
Var wtest inside FOR: 1
Var wtest iside while: 10
Var wtest iside while: 100
Var wtest iside while: 1000
Var wtest iside while: 10000
Var i inside FOR: 4
Var nums i inside FOR: 54443
Var wtest inside FOR: 1
Var wtest iside while: 10
Var wtest iside while: 100
Var wtest iside while: 1000
Var wtest iside while: 10000
Var wtest iside while: 100000
【问题讨论】:
-
为什么
(120 / 1) % 10) == 0在您看来不正确? -
(120/1 )%10 似乎有什么问题?
-
这对我来说是正确的,
120 / 10 = 12因此120 % 10 = 0 -
看看
%操作员做了什么:en.wikipedia.org/wiki/Modular_arithmetic -
是的——你们是对的人。我大错特错而且过度扩张。谢谢你的cmets。我真的很感激。
标签: c for-loop while-loop