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,这个又是为什么呢?
展开
展开全部
选择题考查的知识点
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在使用前没有赋初值,那在调用它时它的值是不确定的。
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,可以这样理解吧?
展开全部
1、if(b!=2||c--!=3)这一句,有一个逻辑或运算,前面b!=2已经为真了,这时,if的条件已经成立了(无论后面是真是假已经不重要了),这时c语言就智能化处理,把后面的c--!=3直接忽视了,既不判断真假也不做c--运算了,这也是c语言聪明的地方。所以c还是原值3。
2、sum不赋初值时,后面无法正确参与运算,应该是出乱码。你说的出15,应该是巧合。
2、sum不赋初值时,后面无法正确参与运算,应该是出乱码。你说的出15,应该是巧合。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询