【发布时间】:2014-04-03 14:57:09
【问题描述】:
在编程中,模数有助于将数字保持在不超过上限的范围内。
例如:
int value = 0;
for (int x=0; x<100; x++)
cout << value++%8 << " "; //Keeps number in range 0-7
输出:
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7...
现在考虑这种情况:
int value = 5;
for (int x=0; x<100; x++)
cout << value-- << " ";
输出:5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7...
我的问题是:如何使用 if 或 switch case 等任何条件语句将下限设置为 0 WITHOUT?
我想要的输出:5 4 3 2 1 0 0 0 0 0 0 0 ...
【问题讨论】:
-
有可能吗?但我只是觉得有可能..
-
@TheForestAndTheTrees 请不要那样做。
-
如果我使用 unsigned int,我认为当它达到 -1 时它会循环回到最大值...65535? :P
-
@user3437460 如果您希望将负数转换为正整数,您可能会对 std::abs(int) (coliru.stacked-crooked.com/a/0f0e6aa6243f114b) 感兴趣 - 是的,它可能会溢出 unsigned int。跨度>
标签: c++ math numbers limit operation