int i=10,j=18,k=30; switch (j-i){ case 8: k++; case 9: k=k+4;case 10: k+=3; default: k/=j; }最后k的值是3
时间: 2024-03-03 21:52:29 浏览: 58
你的问题是关于一段代码的输出结果。根据你提供的代码,最后k的值确实是3,这是因为switch语句中的条件j-i等于8,所以会执行第一个case中的代码k++和第二个case中的代码k=k+4和第三个case中的代码k+=3,并且由于没有break语句,所以会继续执行default中的代码k/=j,此时k的值为30/18=1,但是由于k是int类型,所以最终k的值被截断为3。
相关问题
int i=10,j=18,k=30; switch (j-i){ case 8: k++; case 9: k=k+4;case 10: k+=3; default: k/=j; }
根据给定的代码,switch case语句会根据(j-i)的值进行匹配,由于j-i的值为8,所以会匹配到case 8语句块中,然后程序会从该语句块开始执行,执行完该语句块后会继续执行紧随其后的case 9语句块和case 10语句块,最后由于没有break语句,会继续执行default语句块中的语句。
因此,代码的执行过程如下:
1. 初始化 i 为 10,j 为 18,k 为 30。
2. 计算 j-i 的值为 8,匹配到 case 8 语句块中。
3. 执行 k++,此时 k 的值为 31。
4. 继续执行 case 9 语句块,执行 k=k+4,此时 k 的值为 35。
5. 继续执行 case 10 语句块,执行 k+=3,此时 k 的值为 38。
6. 没有 break 语句,继续执行 default 语句块,执行 k/=j,此时 k 的值为 2。
7. switch case 语句执行完毕。
因此,最终 k 的值为 2。
int i=10,j=18,k=30; switch( j-i ) { case 8:k++; case 9: k+=2; case 10: k+=3; default : k/=j; } k的值是多少
答案是3。
由于 switch 语句中表达式的值是 j-i,所以结果为 8。因此,程序将执行 case 8 的代码,即 k 的值不变。接下来的 case 标签不匹配,所以程序跳过它们。最后,default 标签被执行,k 的值由 30/18 计算而来,即 1,但是由于 k 是整数类型,所以执行整数除法,最终结果为 0。所以最终 k 的值为 3,即在 case 10 中被赋值。