a=1;+b=1+;+c=0+执行语句“d=--a+l‖+b--‖(c=b+3);+后,a、b、c

1个回答
展开全部
咨询记录 · 回答于2023-12-30
a=1;+b=1+;+c=0+执行语句“d=--a+l‖+b--‖(c=b+3);+后,a、b、c、d的值分别为
亲,您好。 1. a=b=c=1;++a||++b&&++c;执行后输出a,b,c分别是:2 1 1。备悔 2. ++a||++b&&++c;这个语句只会执行++a,++b&&++c不会执行。C语言在做||运算时,如果第一个操作数++a为真(非零),直接返回真,而不计算第二个操作数++b&&++c。运行结果是:-1,1,1。 楼上的,在式子中,--a || ++ b && --c; 这是一个布尔条件测试算式,只能是真(1)或假(0)。你可能认为如下是正确的: 布尔条件完整测试式子作如下运算: && 运算高于 || 运算,于是,测试 ++b && --c : ++b = 2, -- c = 0 --> b = 2, c = 0 2 && 0 逻辑运算为= 假 ( 0 ) 再测试 --a || 0: --a = -1, -1 || 0 = 真(1) , d = 真 (1) 于是最后结果是: -1, 2, 0, 1 但不是仿宴正这样的!C 语言编译器优化了代码!所以实际上在测试这样的逻辑算式时,如果有类似 A || B 的式子,那么实际上只测试一个就可以认定结果为真了。就只测试A,一旦A 为真,就不再计算B 了。 所以,实际上的程序运行中的计算过程是:--a || ( ++b && --c ) 这个式子,最左边的 --a 先被计算,--a = -1,由于它右边是或的关系(||)而且a 不为 0,因此祥则,程序不再计算,直接赋值给 d。b 和 c都不曾改变过。所以最终结果:-1, 1, 1, 1。 亲,以上就是我为您归纳整理 的答案,为您服务很开心,请给我个赞叭,非常谢谢您,希望我的回答对您有所帮助,然后希望您天天开心,生活愉快,好运常伴哦
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消