c语言的if语句

在c语言if语句中又一种形式是:
if(表达式1) 语句1
else if(表达式2) 语句2
else 语句3
请问可不可以写成
if(表达式1) 语句1
if(表达式2) 语句2
else 语句3
这样写可以吗,说下原因

不可以。
第一种是:
语句1的执行逻辑是:表达式1为真;
语句2的执行逻辑是:表达式1为假并且表达式2为真;
语句3的执行逻辑是:表达式1为假并且表达式2为假;
但是第二种写法则是;
语句1的执行逻辑是:表达式1为真;
语句2的执行逻辑是:表达式2为真;与表达式1的值没有关系;
语句3的执行逻辑是:表达式2为假,与表达式1的值没有关系;

else与前面的if是最近匹配关系;这一点要注意。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-08-16
不可以!举个例子

如果i = 1 的话,这段程序后j的值是0;(只执行第一句)

if(i>0) {i = 0; j = 0;}
else if (i==0) j = 1;
else j = -1;

但如果修改成一下形式,则i=1时,j的值变为1 (执行第一句之后,执行第二句)

if(i>0) {i = 0; j = 0;}
if(i==0) j = 1;
else j = -1;

现在你明白了吧。
第2个回答  2008-08-16
可以,因为c++的规则是else自动跟上面最近的一个if匹配

不信的话,写个简单的小程序试一下就行了,不会错的
第3个回答  2008-08-16
可以,没有逻辑上的错误。实际上第二个if时就默认否决了第一个if的条件,所以不存在冲突。
第4个回答  2008-08-16
最好编程试下,因为这第三个else可能是对应的第一个IF
第5个回答  2019-07-28
你好,正确的语句如下:

while(scanf("%d",&a)!=eof&&(a<100||a>999))
printf("您输入的不是三位数,请重新输入:");

有疑问提出。
望采纳。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网