C语言学习Day 1——分支结构

C语言是一种结构化的程序设计语言,今天学习的是分支结构

在学习分支结构之前,我们首先要了解有关逻辑操作符和关系操作符的知识

关系操作符

1.关系操作符的类型

(1)>(大于运算符)

(2)<(小于运算符)

(3)>=(大于等于)

(4)<=(小于等于)

(5)==(等于)

(6)!=(不等于)

这里需要特别注意的是等于运算符有两个等于符号,如果只有一个符号,则判断一直为真。

在这个代码中,if的判断语句中只有一个等号,我们的本意是判断n是否等于1,而这不是关系运算符,而是在给n赋值 ,即为真。

2.关系运算符的运算

关系运算符是从左到右运算,返回值为0或1,因此运算符不宜连用。

对于d,首先c<d不成立,返回值为0,再继续比较0<a,依旧不成立,故d的值为0。

对于e,首先a等于0成立,返回值为1,再继续比较1<b,不成立,故e的值为0。

逻辑操作符

1.  !:逻辑取反运算符

逻辑取反运算符的作用是改变单个表达式的真假

a ! a
非0 0
0 1

 

 

 

2.  &&  :  逻辑与运算符

只有所有表达式的值为真最后的结果才为真

### 关于C语言中变量与冒号的使用 在C语言中,冒号 `:` 的主要用途并不是用于定义或操作变量本身,而是更多地出现在特定的控制结构或其他上下文中。以下是关于C语言中变量以及冒号使用的详细介绍。 #### 1. C语言中的变量定义 C语言是一种强类型的语言,在声明变量时需要指定其数据类型。例如: ```c int a; // 定义整型变量a float b; // 完整浮点数b char c; // 字符型变量c ``` 需要注意的是,C语言中的变量必须先声明再使用[^1]。如果没有显式初始化,则默认值取决于存储类别(局部变量未初始化通常为垃圾值,全局变量会自动初始化为0)。 #### 2. 冒号在C语言中的常见用法 尽管冒号不是直接用来定义变量的关键字,但在某些情况下它确实有重要的作用: ##### (1)位域(Bit Field) 中的冒号 在C语言中可以利用位域来节省内存空间,通过冒号分割的方式设置字段宽度。例如: ```c struct BitField { unsigned int flag : 1; // 占用1位 unsigned int value : 7; // 占用7位 }; ``` 上述代码表示`flag`占用1位而`value`占用7位。这种技术经常应用于硬件驱动开发等领域。 ##### (2)标签(Label) 和 goto 语句中的冒号 C语言支持goto跳转指令,其中目标位置由带冒号的名字标记出来作为标签(label),形如下面这样: ```c start: printf("This is the start label.\n"); if(condition){ goto end; } end: printf("Jumped to 'end' label."); ``` 这里`start:`和`end:`就是两个不同的标签名,后面紧跟着一条或多条可执行语句[^2]。 ##### (3)switch-case 结构里的冒号 当处理多分支逻辑时,常用到switch-case结构,每个case关键字之后都需要加上一个冒号分隔器,表明该情况下的匹配项及其对应的操作部分。比如: ```c switch(dayOfWeek){ case 1: printf("Monday\n"); break; case 2: printf("Tuesday\n");break; default: printf("Invalid day number!\n"); } ``` 此例子展示了如何根据不同数值打印相应的工作日名称;如果输入超出范围则触发default子句[^5]。 综上所述,虽然冒号不会单独参与变量本身的创建过程,但它却广泛存在于其他重要编程概念之中,像位运算、流程控制等方面发挥着不可替代的作用。 ### 示例代码展示 以下是一个综合运用了以上知识点的小案例——计算并显示一周内的某一天对应的英文名字。 ```c #include <stdio.h> void main(){ struct WeekDay{ char name[9]; short length : 4; // 使用位域限定length只占四个比特位 }; const struct WeekDay days[]={ {"Sunday",8}, {"Monday",6}, {"Tuesday",7}, {"Wednesday",9}, {"Thursday",8}, {"Friday",6}, {"Saturday",8} }; retry_input: int n; printf("\nEnter an integer between 1 and 7 representing weekdays:"); scanf("%d",&n); if(n<1 || n>7){ printf("Error! Please enter again.\n"); goto retry_input; } switch(n){ case 1:printf(days[n-1].name);break; case 2:printf(days[n-1].name);break; case 3:printf(days[n-1].name);break; case 4:printf(days[n-1].name);break; case 5:printf(days[n-1].name);break; case 6:printf(days[n-1].name);break; case 7:printf(days[n-1].name);break; } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值