|
|
楼主 |
发表于 2026-4-14 11:57:40
|
显示全部楼层
答案与解析
一、基础题答案
a=20,b=10(b 赋值后不受 a 后续修改影响)
x=5,y=5,z=5(连续赋值从右往左执行)
计算过程:
m=10 →13→11→44→14→4,最终m=4
二、易错题答案
输出假,a=0
解析:a=0是赋值,不是判断相等,表达式值为 0(假)
n=10
解析:复合赋值右边整体计算,等价于n = 2*(3+2)
输出100
解析:赋值表达式的值 = 左值最终的值
三、进阶题答案
a = -4
步骤:a*a=4 → a=2-4=-2 → a=-2 + (-2) =-4
x = -20
i=7,j=13
四、编程题参考代码
题 1:复合赋值计算
#include <stdio.h>
int main() {
int num;
scanf("%d", &num);
num *= 2; // 乘2
num += 10; // 加10
num /= 3; // 除以3
printf("%d", num);
return 0;
}
题 2:交换两个数(无临时变量)
#include <stdio.h>
int main() {
int a=3, b=5;
a = a + b;
b = a - b;
a = a - b;
printf("a=%d, b=%d", a, b);
return 0;
}
总结
赋值运算从右向左结合,连续赋值按这个规则计算
复合赋值 op= 会把右边整体作为一个运算数
赋值表达式的值 = 左边变量最终的值
区分 =(赋值)和 ==(相等判断) |
|