经典指数          
原因
1842
浏览数
0
收藏数
 

这段代码的输出结果是:
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;
             }
         }
     }
 }

  • 65535,0
  • 65536,1
  • 65536,65535
  • 65536,0

     举报   纠错  
 
切换
1 个答案

选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

 
切换
撰写答案