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

下面程序输出是什么
int main()
{
	bool first=true;
	int sum=0;
	int value;
	unsigned short i=0xFFFF;
	for (;i>=0;--i)
	{
		if (first)
		{
			value=65536;
			sum+=value%3;
			first=false;
		}
		else{
			sum+=--value%3;
			if (value<=0)
			{
				cout<<sum<<","<<i;
				break;
			}
		}
	}
	return 0;
}
  • 1,65535
  • 65535,65535
  • 65535,65536
  • 65535,1
  • 65536,65535

     举报   纠错  
 
切换
1 个答案
看到推荐解析算sum好复杂,其实sum就是value从65536减到1每次%3,而65536%3=1,65535%3=0,65534%3=2.。。。余数一直是102,102这样出现的,因为是对3取模嘛。那么相加起来就把1+0+2看成是1+1+1,更好理解,结果一样, 最后一次1%3=1。所以value从65536到1是执行了65536次,余数加起来就是65536个1相加,sum等于65536.
 
切换
撰写答案
扫描后移动端查看本题