关于C语言的学习笔记#7

分支语句

分支语句又叫条件判断语句,适用于在程序中进行判断。
分支语句需要了解的概念是:
在C语言中,0意味着假,非0意味着真。
在C语言中,当表达式成立时,意味着真,通常这个时候表达式等同于数值1。当表达式不成立时,意味着假,通常这个时候表达式等同于数值0。
通常对于一个分支语句来说,当其条件为真,即执行分支语句中的指令。当其条件为假。则不执行分支语句中的指令。
实际上,下文所说的“判断条件”,正确来说应该叫做“表达式”。只是为了方便理解而采用了“判断条件”这样的名字。

if else语句

if else语句是C语言中一个用于条件判断的语句。
语法结构为:

if (判断条件) //当判断条件为真(即成立)时,执行if内语句
{ //当if内的执行内容只有一条语句时,可以省略{}
	执行内容;
}
else //当判断条件为假(即不成立)时,执行else中的语句
{ //与if一样,当执行内容只有一条语句时,可以省略{}
	执行内容;
}

其中,判断条件左右两个括号是必须要加进去的。
判断条件通常会用到笔记5中提到的关系操作符、条件操作符和逻辑操作符。
{}包括了if语句中的内容。
通常,else与if的匹配遵循就近原则,else会与位于它上方且离它最近的if相匹配(假如该else并不是处在if内部或其它函数中)
示例:

int main()
{
	int a = 0;
	scanf("%d",&a);
	if (a > 7) //a大于7时,执行if内的语句
	{
		printf("%d",a);
	}
	else //a不大于7时,转而执行else内的语句
	{
		printf("%d",7);
	}
	return 0;
}

当要进行多次判断时,可以往if的执行内容里面加入多个if语句,即嵌套if语句。不过,也可以使用else if来实现。

if (判断条件)
{
	语句内容
}
else if (判断条件) /*当if中的条件为假时,对else if
的条件进行判断,为真则执行elseif内的语句,不执行else语句*/
{
	语句内容
}
else
{
	语句内容
}

else if实际上对多重判断if语句的另一种写法。
以下是一个多重判断的if语句:

if (a > 10)
	printf("%d",a);
else
	//这里可以不用加{},因为整个if else被视为一条语句
	if (a > 5)
	printf("7");
	else 
	printf("0");

else if实际上就是把第二次判断中的if转移到了第一个else上。这样做的基础在于C语言只读取语句,不会对缩进与语句排列有严格的要求(这与python有很大区别)
else if可以加入多个,在语句中要按照顺序进行排列,程序在执行时会按照从上往下的顺序依次进行判断。

switch语句

switch语句也是分支语句中的一种。
相较于if else语句,switch语句方便进行更多次数的判断。
结构为:

switch (整型表达式) /*switch会记录下整型表达式的值。
这里将这个值设为a*/
{
case 常量表达式b: 语句 //当a等于表达式b的值,执行后面的语句
 //case后不需要花括号,可以接任意数量的语句
case 常量表达式c: 语句
case 常量表达式d: 语句
default: 语句 /*当没有一个case语句的表达式值与a相匹配时,
执行default后面的语句*/
}

其中,整型表达式意味着该表达式不能包含浮点数和字符串。由于C语言将字符当作整数来处理,因此该整型表达式可以包含单个字符。
常量表达式意味着该表达式不能包含变量和函数调用。通常的,像5+7这样的表达式为常量表达式,而a+7则不是(假如a不是一个表达常量的宏)。常量表达式的值必须是整数或字符。
每一个case后面跟着的语句最后通常须带有break语句。break语句表示跳出,否则在执行完该case中的语句后程序会继续执行下面case的语句。
示例:

int main()
{
	int a = 0;
	scanf("%d",&a);
	switch (a)
	{
		case 1:	printf("a");
				break;
		case 2: printf("b");
				break;
		case 3: printf("c");
				break;
		default: printf("No!");
	}
	return 0;
}

补充说明

逻辑运算符&&和||具有“短路”特性。
操作符会首先计算出左操作数的值,然后计算右操作符,当整一个表达式的值可以通过左操作符的值推导出来时,便不会计算右操作数的值。

a = 2
a = 1 && a++ = 3 //因为a = 1已经不成立,整个表达式输出0
//因而不会计算a++ = 3。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值