c的基本语法

逻辑运算

&&和||的短路

应当注意到,这两个运算符的两端会优先计算左端,如果左端结果将使结果确定,那么就不执行右端语句。

&&和||的计算优先度

&&的计算优先度更高,但二者的计算优先度均低于&和|。
但如果||和&&同时存在,且||的一端为&&运算结果,当出现||的另一端结果为1,将不执行&&两端的语句
例如,我们有

点击查看代码
int i=1,j=1,k=1;
printf("%d %d %d %d",i++ || j++ && k++,i,j,k);
输出结果为`1 2 1 1`

逻辑结构

if的用法

if的结构

点击查看代码
if()
{
}
应当注意,`()` 内为判断的条件,其中常用到 `!` `|` `&`三种运算符 并且当没有`{}`时,if条件成立仅执行if后第一个分号前的语句。 当存在 `{} ` 时,if条件成立将会执行`{}`内的全部内容。

else与else if

对于一个else而言,对应的是上一个if条件不成立以外的所有情况。
对于一个else if来说,对应的是上一个if条件不成立且满足else if()的括号内容。
应当注意,对于同一个if,可以存在多个else if,但else只能存在唯一一个。

if的级联

用以解决过度的缩进问题,即代码过于丑陋

点击查看代码
if() {
}else if(){
}else if(){
}else if(){
}
~~当然这是学校老师习惯的,也只是相对清爽。~~

个人更喜欢这样

点击查看代码
if()
{
}
else if()
{
}
else if()
{
}
不过代码还是在阅读舒适的情况下依据自己习惯来。

else if的悬空问题

出现多个if嵌套时,注意{}的使用以避免else 悬空。

条件表达式

常用于简化代码。但增加了代码的不可读性
exper1?expr2:expr3

点击查看代码
exper1?expr2:expr3
等价于
点击查看代码
if exper1
exper2
else
exper3
需要注意,条件运算符的运算优先级低于赋值运算符以外的所有运算符。因此在特定情况下应当加上`{}`

布尔值

C89输麻了没有布尔类型
C89只能够自己定义三个宏

点击查看代码
#define false 0
#define true 1

C99的头文件<stdbool.h>定义了bool,true和false三种类型

switch的使用

例子

点击查看代码
switch(x){
case i:printf();break;//如果x是i的话
case j:printf();break//如果是j的话
default:printf();break;//剩余所有情况
}
优点:部分情况能使代码清爽。

缺点:case后只能是一个固定的值
如果没有break的话将会使被执行的第一个case后所有语句被执行

循环结构

for循环

自变量自增自减的循环

while循环

判定控制表达式在循环体执行之后的循环。

do while循环

用于判断控制表达式在循环体执行之后的循环。

循环应当关注边界性

posted @   WE-R  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示