c++ if

if 语句的复合和嵌套
1.复合
if后可以跟多个语句 当多个语句含于一个if时需要用"{}"括起来,否则得不到我们想要的结果.
例如

#include<iostream>
using namespace std;
int main(){
	int x,y;
	cin>>x>>y;
	if(x<y)
	x=y;y=x;
	else
	x++;y++;
	return 0;
}

我们如果编译上述代码会出现“Compile Error”的情况
这是因为编译的时候“y=x;”隔开了if 和 else  else 识别不出来前边的if 这里就会出现编译错误,所以我们要把y=x;和x=y;用“{}”括起来
这是因为编译的时候“y=x;”隔开了if 和 else else 识别不出来前边的if 这里就会出现编译错误,所以我们要把y=x;和x=y;用“{}”括起来.

#include<iostream>
using namespace std;
int main(){
	int x,y;
	cin>>x>>y;
	if(x<y)
	{x=y;y=x;}
	else
	x++;y++;
	return 0;
}

像这样我们编译就不会出错了,但是,还是有问题。
如果我们的意图是如果x大于等于y的时候x和y都自增1。这个程序还是不完善的
因为“y++;” 这条语句是不属于else的 也就是说 不管 什么条件 y 都会自增 1;
很多同学写代码的时候经常在这里出现错误,要知道,机器不会理解我们的想法,我们不能靠我们主观的想法去写代码,要考虑机器的识别能力,也就是写代码的时候要注意层次 ,这时候我们应该把“x++;y++;” 用“{}”括起来,这样就得到了我们想要的结果。
2.if语句的嵌套
一般形式:
if(exprl)
if(expr2) 语句1
eIse 语句2
else
if(expr3) 语句3
else 语句4
需要注意的时候 当内嵌if语句不包含else语句时容易出错
例如
if(表达式1)
if(表达式2)<语句1>
else <语句2>
这个代码我们想表达的是 如果表达式1成立 则判断表达式2 是否成立 如果成立执行语句1 如果表达式1不成立则执行语句2。
但实际上不是这样
实际上else 是对第二个表达式的否定 而不是对第一个表达式的否定
这时因为每个else只与它前面最近的if配对,如果没这个规定的话前面两个if就会争夺同一个else而产生二义性
我们可以把第二个if语句用花括号括起来
总结
if语句的复合和嵌套如果使用不当就会产生二义性,在实践过程中要注意加上花括号,除非我们对if语句用的非常熟练 有的时候可以不用加花括号!

猜你喜欢

转载自blog.csdn.net/weixin_43438700/article/details/84189458
C++