月颉之 2024-12-17 12:46 采纳率: 0%
浏览 6

嵌入式小分析题,求解是这样做的吗?

运行下面的程序后,变量varl和var2的值分别是多少?并说明理由。。
int varl=0, var2=0;
int main(void)
{unsigned char temp
varl=10;
for(temp =0;temp<1000; temp = temp +2) var2++;
varl=20;
while(1);}
答:
var1的值为 20,var2的值为 628 。
var1初始化为 0 后被赋值为 10,之后又被赋值为 20,所以最终var1的值为 20。
对var2,在for循环中,temp从 0 开始每次增加 2 ,直到temp >= 1000。由于temp是无符号字符类型,其取值范围是 0 到 255,当temp达到 255 后再加 2 会溢出变回 1 ,然后继续循环,总共循环次数为(255 - 0 + 1) / 2 + (1000 - 1) / 2 = 128 + 499.5 = 627.5(向上取整为 628 次),所以var2的值为 628 。

  • 写回答

1条回答 默认 最新

  • 老皮芽子 2024-12-17 16:53
    关注

    for 是个死循环
    temp 最大 255 永远会小于 1000
    for 会永远循环下去

    评论

报告相同问题?

问题事件

  • 创建了问题 12月17日