C语言速成之05深入了解表达式与语句

深入了解C语言表达式与语句

大家好,我是程序员Feri,拥有超过12年的编程经验。我不仅参与过众多开发项目、带领过团队,还进行过创业。我擅长Java、鸿蒙、嵌入式、人工智能等多个领域的开发。在这里,我专注于和大家分享程序员成长过程中的那些事儿,希望在成长的道路上能与你相伴,一起朝着目标勇往直前!

1 表达式

表达式是由数字、算符、数字分组符号(括号)、自由变量和约束变量等按照能求得数值的有意义排列方法组合而成的。在C语言里,表达式由操作数(像变量、常量)和运算符构成,最终会产生一个值。

表达式的种类丰富多样,常见的有:

  1. 算术表达式

  2. 赋值表达式

  3. 关系表达式

  4. 逻辑表达式

  5. 位运算表达式

  6. 条件表达式

  7. 逗号表达式

1.1 算术表达式

算术表达式主要用于执行基本的数学运算。下面是一个示例代码,展示了加法、减法、乘法、除法、取模以及自增自减运算的使用:

//算术表达式
void f1(){
    int a = 5, b = 3;
    // 加法
    int add_result = a + b;
    // 减法
    int sub_result = a - b;
    // 乘法
    int mul_result = a * b;
    // 除法
    int div_result = a / b;
    // 取模
    int mod_result = a % b;

    printf("加法结果: %d\n", add_result);
    printf("减法结果: %d\n", sub_result);
    printf("乘法结果: %d\n", mul_result);
    printf("除法结果: %d\n", div_result);
    printf("取模结果: %d\n", mod_result);
    //++ 在前 先自增 后输出
    printf("自增结果: %d\n", ++a);
    //-- 在后 先输出 后自减
    printf("自减结果: %d\n", b--);
}
 

为了帮助大家更好地理解算术表达式,这里有一道思考题:

//算术表达式 常见的试题分析
void t1(){
    int a = 5;
    double b = 2.5;
    int c = 3;
    int d = 4;
    double result;

    result = (a + (int)(b * c)) / (double)(d - 1) + (a % c) * (b + d);
    //思考题 结果是多少?怎么分析得来的呢
    printf("表达式的结果是: %lf\n", result);
}  

你可以试着分析一下这个表达式的计算结果,思考其计算过程。

1.2 关系表达式

关系表达式由数值和关系操作符连接而成,在后续编程中会经常用到。每个关系表达式的结果要么为真,要么为假。在C语言里,用0表示假,非零表示真。

例如,有 int x = 16;,那么 10 < x < 30 这个表达式的结果是怎样的呢?答案是永远为真。不管 x 的值是多少,哪怕是50,该表达式的结果依旧为真。

这是因为在编译器眼中,表达式是从左往右依次执行的。先执行 10 < x,若为真则返回1,接着判断 1 < 30,结果还是真;若 10 < x 为假,则返回0,再判断 0 < 30,结果同样为真。

所以,如果要判断一个数是否在10到30之间,不能写成 10 < x < 30,而应该写成 x > 10 && x < 30,这样才能分别独立地进行两次判断,只有当两个条件都为真时,结果才为真。

下面是一个关系表达式的示例代码:

//关系表达式
void f2(){
    int a = 5, b = 3, c = 7, d = 2;
    int result;

    // 判断 a 是否大于 b 且 c 是否大于 d,或者 a 是否等于 c 且 b 是否等于 d
    result = ((a > b) && (c > d)) 
    || ((a == c) && (b == d));

    printf("结果: %d\n", result);
    printf("结果: %s\n", result==1?"true":"false");
}       

现在来做一道练习题:

float x = 3.5, y = 2.1, z = 4.2;
// 判断 x 是否大于 y 且 z 是否小于等于 x 与 y 的和
int result = (x > y) && (z <= (x + y));

你能算出 result 的最终结果吗?

其他类型的表达式这里就不再详细演示了。

2 语句

在C语言中,语句相当于给计算机下达的完整指令。从形式上看,以分号结尾的一条代码就是一条语句。

C语言中的语句可以分为以下五大类:

  1. 表达式语句:在表达式后面加上分号构成,主要用于执行表达式所代表的操作,可能会对变量的值产生修改。

  2. 复合语句(块语句):用花括号 {} 把一组语句括起来,通常用于将多个语句组合成一个逻辑单元。

  3. 控制语句:用于控制程序的执行流程,包括条件语句、循环语句和转向语句。

  4. 函数语句:用于调用函数并执行函数体。

  5. 空语句:仅由一个分号组成,不包含任何内容。

好啦,今天的内容就到这里啦。关注我,一起开启更多编程知识的学习之旅!

【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器的建模仿真展开,重点介绍了基于Matlab的飞行器动力学模型构建控制系统设计方法。通过对四轴飞行器非线性运动方程的推导,建立其在三维空间中的姿态位置动态模型,并采用数值仿真手段实现飞行器在复杂环境下的行为模拟。文中详细阐述了系统状态方程的构建、控制输入设计以及仿真参数设置,并结合具体代码实现展示了如何对飞行器进行稳定控制轨迹跟踪。此外,文章还提到了多种优化控制策略的应用背景,如模型预测控制、PID控制等,突出了Matlab工具在无人机系统仿真中的强大功能。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校学生、科研人员及从事无人机系统开发的工程师;尤其适合从事飞行器建模、控制算法研究及相关领域研究的专业人士。; 使用场景及目标:①用于四轴飞行器非线性动力学建模的教学科研实践;②为无人机控制系统设计(如姿态控制、轨迹跟踪)提供仿真验证平台;③支持高级控制算法(如MPC、LQR、PID)的研究对比分析; 阅读建议:建议读者结合文中提到的Matlab代码仿真模型,动手实践飞行器建模控制流程,重点关注动力学方程的实现控制器参数调优,同时可拓展至多自由度或复杂环境下的飞行仿真研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值