C语言初学,下面两道题我有点疑问

19选择题的第二个if中出现了c--,但是我用DEV-C++软件输出的答案是c=3,我想问为什么第二个if中的c--没有执行。19填空题,我对sum不赋值的时候用devc... 19选择题的第二个if中出现了c--,但是我用DEV-C++软件输出的答案是c=3,我想问为什么第二个if中的c--没有执行。19填空题,我对sum不赋值的时候用devc输出的是16,对sum赋0时输出的值是15,这个又是为什么呢? 展开
 我来答
elecfun
2018-11-26 · TA获得超过397个赞
知道小有建树答主
回答量:386
采纳率:76%
帮助的人:105万
展开全部
选择题考查的知识点
1、b++和++b的区别: ++在后面,是先参与计算,再加1;而++在前面时是先加1再参与计算。
刚开始b=2,当执行第一个if中的判断b++ == 2时,执行顺序是先判断b是否等于2,再执行b增加1。所以第一个if的两个条件都为真,并且执行后b=3。
2、多条件的执行顺序。第二个if要求b!=2或者c--!=3,也就是其中一个条件为真即可。代码执行时是从左到右的顺序判断,如果第一个条件为真,那就不用执行后面的判断。因为第一条if执行完后b=3,那么b!=2就为真,后面的c--!=3也就不用执行了。所以最后c是等于3的。
同理如果有if(表达式1&&表达式2),那么当表达式1的条件为假时,表达式2也不会执行了。
填空题考查的知识点是变量在使用前应初始化。sum在使用前没有赋初值,那在调用它时它的值是不确定的。
追问
所以在执行的时候没有值的sum会被赋上1,可以这样理解吧?
追答

没有赋值的sum,它的值不确定。声明一个变量时,只是给这个变量分配了内存空间,不赋值是,这个变量的值就是该内存空间的上次使用后的值。你可以用不同的c在线编译工具跑一下看看,结果是不能确定的。这就跟薛定谔的猫一样。

Yuqi_Tan

2018-11-26 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3459万
展开全部
1、if(b!=2||c--!=3)这一句,有一个逻辑或运算,前面b!=2已经为真了,这时,if的条件已经成立了(无论后面是真是假已经不重要了),这时c语言就智能化处理,把后面的c--!=3直接忽视了,既不判断真假也不做c--运算了,这也是c语言聪明的地方。所以c还是原值3。
2、sum不赋初值时,后面无法正确参与运算,应该是出乱码。你说的出15,应该是巧合。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老她就1B
2018-11-26 · TA获得超过283个赞
知道小有建树答主
回答量:511
采纳率:80%
帮助的人:69.7万
展开全部
#include int main(){ char a; printf("please enter a letter\n "); scanf("%c",&a); //错误 if(a=='A') printf("没有前面的字母\n"); else if(a=='Z') printf("没有后面的字母\n"); else{ // 应该用括号括起来,否则else只包含接下来的一句话 a=a+1; printf("a=%c\n",a); // 错误 a=a-2; printf("a=%c",a); } return 0;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

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

说明

0/200

提交
取消

辅 助

模 式