问一道C语言选择题

来源:百度知道 编辑:UC知道 时间:2024/05/17 00:27:11
假定有以下变量定义:int k=9,x=14;则执行语句k=(x%=k)-(k%=4)后,k的值为()
A 5;B 3;C 1; D 4;
请选对答案,并且讲清楚为什么,谢谢!

k=4
x%=k结果为x=x%k=5
k%=4结果为k=k%4=1
k=(x%=k)-(k%=4)=4

运行之后 k=4;

=操作符的结合性是从右到左,所以先计算(x%=k)-(k%=4),-操作符的结合性是从左到右,所以先计算x%=k,之后x=5,k=9,再计算k%=4,之后k=1

所以(x%=k)-(k%=4)的值就是5-1==4因此最终k=4;

#include <stdio.h>
void main()
{
int k=9,x=14,c;
k=(x%=k)-(k%=4);
printf("%d",k);
scanf("%d",&c);
}

D
x%=k即x=x%k,所以x=5(14%9),
同理,k%=4的值是1(9%4),
于是,k=5-1=4

k=(x%=k)-(k%=4)等价于:k=(x=x%k)-(k=k%4)因此结果为:
4

根据优先级
先执行 x%k(x=x%k) 即x=14%9=5 (求余运算)
再 k%=4(k=k%4) 即 k=9%4=1
所以 k=5-1=4
选D
x和k都是变量,每执行一次赋值运算将改变其值