求证三个同类C程序的结果(基础知识,但要仔细!)

ppper2022 2005-10-27 09:16:39
int a=10,b=9,c=8;
则执行表达式 c=(a-=b-5)),c=(a%11)+(b=3) 后,b 的值是多少?
A. 9 B. 3
(书上的答案:B)

int a=1,b=2,c=3,d=4,m=1,n=1;
则执行表达式 (m=a>b) && (n=c>d) 后,n 的值为:
A. 0 B. 1
(书上的答案:B)

int a=25,b=2,c=19,d;
则执行表达式 a<=25 && b--<2 && c?(d=1):(d=0) 后,d的值为:
A. 0 B. 1
(书上的答案:B)

请说出您的答案,做出明确的解释。
...全文
109 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
PMsg 2005-10-27
  • 打赏
  • 举报
回复
看看符号的优先级
不要搞错左右结合
我觉得是BBA
doulikeme 2005-10-27
  • 打赏
  • 举报
回复
(m=a>b) && (n=c>d)
n=1是表达式短路的结果
ppper2022 2005-10-27
  • 打赏
  • 举报
回复
那第三题即,
a<=25 && b--<2 && c?(d=1):(d=0)
?:运算符优先级低于&&,所以上式可写为
( a<=25 && b--<2 && c ) ?(d=1):(d=0)
a<=25 && b--<2 && c 值为假,即d=0.
结贴。
谢谢。
hbvanguard 2005-10-27
  • 打赏
  • 举报
回复
很明显,B B B,
1.第一个表达式的b==9,执行完第二个后b==3
2.编译器在判断condition1&&condition2表达式的时候,如果condition1为true,它会继续判断并执行condition2;如果condition1为false则它不会判断并执行condition2,此题属于后者,所以n的值没有改变为初始值n==1.
3.根据以上原理d==1;
xiaocai0001 2005-10-27
  • 打赏
  • 举报
回复
第二题 应该是B
是C/C++中逻辑运算存在 "短运算"的关系
对 A && B 若A已经为假, 则不再计算B, 整个表达式都为假了
ppper2022 2005-10-27
  • 打赏
  • 举报
回复
请分清表达式与语句的区别,题目没有明确表明各表达式在什么样的语句环境里,所以,请阅明题意再解答。谢谢。
zxhong 2005-10-27
  • 打赏
  • 举报
回复
2,n=1
n没有赋任何值,所以还是初始值
bm1408 2005-10-27
  • 打赏
  • 举报
回复
int a=1,b=2,c=3,d=4,m=1,n=1;
则执行表达式 (m=a>b) && (n=c>d) 后,n 的值为:
A. 0 B. 1

&&操作,具有借断性~
例如: a&&b&&c&&d...
只有当a&&b为真的情况下,才能继续执行,否则就不执行了~
所以是B


int a=10,b=9,c=8;
则执行表达式 c=(a-=b-5)),c=(a%11)+(b=3) 后,b 的值是多少?
A. 9 B. 3
(书上的答案:B)

c=(a%11)+(b=3) 显示的等于3
yulin001122 2005-10-27
  • 打赏
  • 举报
回复
第一个显然B=3 第2个个人理解是不是在if((m=a>b) && (n=c>d) )里面 假如是的话应该是1因为&&前面的为FALSE所以不在作后面的(n=c>d)第3个也是同样的道理
zxhong 2005-10-27
  • 打赏
  • 举报
回复
1,b=3
3赋值给b,所以b为3

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧