void main(void)
{
bool first = true;
int sum = 0;
int current_value;
for (unsigned short i = 65535; i >= 0; --i)
{
if (first)
{
current_value = 65536;
sum += current_value % 3;
first = false;
}
else
{
sum += --current_value % 3;
if (current_value <= 0)
{
printf(“ % d % d”, sum, i); break;
}
}
}
}
选c
首先程序可以简化成这样。
int main() { bool first = true; int sum = 1; int
current_value = 65536; for( unsigned short i = 65534 ; i >= 0 ;
--i ) {
sum += --current_value % 3; if( current_value <= 0 ) {
printf( "%d %d " , sum , i ); break; }
} return 0; }
再接下来简化
上面的循环是一个死循环。不起作用的,因为unsigned short是正数,不可能小于0,所以如果要
退出循环只能看下面的break被触发。接下来看
for循环每执行3次
current_alue 减少3 ,sum 加了3
所以程序运行了65535次后
current_value = 0
sum = 1 + 65535 = 65536
i =65535