再学C语言16:表达式和语句

news2025/1/18 17:00:46

语句组成了C的基本程序的步骤,大多数语句由表达式构造而成

一、表达式

表达式(expression)由运算符和操作数组合构成

操作数是运算符操作的对象,可以是常量、变量或二者的组合

C的一个重要属性:每一个C表达式都有一个值

一些表达式是多个较小的表达式的组合,这些小的表达式被称为子表达式

二、语句

语句(statement)是构造程序的基本成分

程序(program)是一系列带有某种必需的标点的语句集合

一个语句是一条完整的计算机指令

在C中,语句用结束处的一个分号标识

sum = a + b  // 只是一个表达式
sum = a + b; // 是一个语句

C将任何后面加有一个分号的表达式看做是一个语句(称为表达式语句)

一个语句是一条完整的指令,但不是所有的完整的指令都是语句,例:

sum = a + (b = c); // b = c是一个完整的指令,但只是一个语句的一部分

常见的4种语句:

#include <stdio.h>
int main(void)
{
    int i, sum;    // 声明语句
    
    i = 0;         // 赋值语句

    while(i++ < 10)// while语句
    {
        sum += i;  // 赋值语句
    }
    
    printf("sum = %d \n", sum); // 函数语句
    
    return 0;
}

声明语句(declaration statement):用于建立变量的名字、类型并为其分配存储空间;一个声明语句不是一个表达式语句

赋值语句(assignment statement):为一个变量分配一个值;赋值语句是表达式语句

函数语句(function statement):引起函数的执行

结构化语句(structured statement):while语句属于其中一种,其结构比一般的语句(如赋值语句)复杂

运行结果:

e89fc0af7927477cad162eca1e114d03.png

副作用(side effect):对数据对象或文件的修改

num = 1; // 语句的副作用是将变量num的值设置为1

顺序点(sequence point):程序执行中的一个点,在该点,所有的副作用都在进入下一步前被计算;C语句中,分号标志了一个顺序点;任何一个完整的表达式的结束也是一个顺序点

完整的表达式(full expression):不是一个更大的表达式的子表达式(一个表达式语句中的表达式、一个while循环中作为判断条件的表达式都是完整的表达式)

示例1:

while(i++ < 10) // i++ < 10是while循环的判断条件,因此是完整表达式
                // 该表达式的结束就是一个顺序点
                // C保证副作用(增加i的值)在程序进入后续语句前发生
                // 使用后缀形式保证i在与10比较之后再增加

示例2:

sum = (1 + i++) + i++; // 表达式1 + i++不是一个完整表达式
                       // 所以C不能保证在计算子表达式1 + i++之后立即增加i
                       // 整个赋值语句是完整表达式
                       // C能保证的是在程序进入后续语句前i被增加2次
                       // C没有指明i是在每个子表达式被计算后增加还是在整个表达式被计算后增加
                       // 所以要避免使用此类语句

三、复合语句

复合语句(compound statement):使用花括号组织起来的两个或更多的语句;也被称为一个代码块(block)

整个复合语句被认为是一个语句

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 基础教程(1)——翻转字符串、集合运算、字符串、列表、元组、字典、数据类型转换、Python推导式、Python运算符、Python 数字类型转换、字符串

1.翻转字符串 def reverseWords(input):# 通过空格将字符串分隔符&#xff0c;把各个单词分隔为列表inputWords input.split(" ")# 翻转字符串# 假设列表 list [1,2,3,4], # list[0]1, list[1]2 &#xff0c;而 -1 表示最后一个元素 list[-1]4 ( 与 list[3]4 一样…

【C++进阶】特殊类设计

&#x1f387;C学习历程&#xff1a;入门 博客主页&#xff1a;一起去看日落吗持续分享博主的C学习历程博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 也许你现在做的事情&#xff0c;暂时看不到成果&#xff0c;但不要忘记&…

vue书写一个uni-app小程序

在本次文章中我来大致向大家介绍一下如何使用Hbuilder X来编写一个uni-app的小程序的项目&#xff0c;在此我只说编写的方法与方向&#xff0c;具体的操作留给大家去亲自实操哦。 1.起步&#xff08;创建一个uni-app框架&#xff09;&#xff1a; 首先&#xff0c;我们需要把…

低代码破解了软件开发“不可能三角”?我做了个测评...

老读者知道&#xff0c;K哥写了10几年代码&#xff0c;后来转做技术管理&#xff0c;现在是上市公司的技术高管。在我们软件行业有一条铁律&#xff1a;长周期、大规模的软件研发过程当中&#xff0c;想要维持良好的运作&#xff0c;需要解决&#xff1a;成本、效能、质量。而且…

Doris-查询(三)

目录1、查询设置1.1、增大内存1.2、修改超时时间1.3、查询重试和高可用1.3.1 代码方式1.3.2 JDBC Connector1.3.3 ProxySQL 方式2、简单查询3、Join查询3.1 Broadcast Join3.2 Shuffle Join&#xff08;Partitioned Join&#xff09;3.3 Colocation Join3.3.1 原理3.3.2 使用3.…

数字孪生电力3D可视化管控平台

当前&#xff0c;新一轮科技革命和产业变革加速演进&#xff0c;物联网、大数据、云计算、人工智能、5G等新一代信息技术快速发展。在众多技术手段中&#xff0c;数字孪生技术以虚实结合为主&#xff0c;架起虚拟世界与现实世界之间沟通的桥梁&#xff0c;为人们提供了更加便捷…

分享5款可以录屏的软件,录屏幕视频软件,亲测好用

很多小伙伴都会使用电脑来作为自己办公、娱乐、学习生活的工具。在电脑上安装录屏软件&#xff0c;可以轻松的协助我们进行网课录制、会议录制、影剧片段录制等。网络上的录屏软件有很多&#xff0c;今天小编分享5款亲测好用的录屏软件&#xff0c;一起来看看吧。 可以录屏的软…

数据结构进阶 二叉搜索树

作者&#xff1a;小萌新 专栏&#xff1a;数据结构进阶 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;介绍二叉搜索树并且模拟实现之 二叉搜索树二叉搜索树的概念节点类二叉搜索树类私有成员构造函数拷贝构造函数赋值运算符重载函数…

若想学 HTML,应从何入手?

前言 个人信息&#xff1a; 大三 工商管理 逻辑算清晰 无编程基础 想学网页设计&#xff0c;打算从HTML开始 。 下面是问题&#xff1a; 需要先学一些更基础的语言&#xff08;如C之类的&#xff09;吗&#xff1f;有何建议&#xff1a; &#xff08;1&#xff09;看哪些书、泡…

无忧·企业邮筒功能介绍

应用介绍 企业邮筒&#xff0c;基于B/S模式的邮件客户端&#xff0c;采用JVS的统一用户体系&#xff0c;作为JVS的协同办公的应用之一。 产品特点 私有化部署、支持多邮件账户、将多个邮件客户端统一为web操作、 软件架构 软件架构说明&#xff0c;JVS-mailbox是作为JVS基…

服装实体店运营需要的所有软件,合集在此!(建议收藏)实体店运营 实体店运营干货 实体店运营全流程所需系统推荐

随着信息化普及程度越来越高&#xff0c;各行各业的运转速度都在加快&#xff0c;做生意的老板们也开始发现&#xff0c;单靠以前的人工管理已经完全不够用了。 尤其是服装实体店&#xff0c;款式分类多&#xff0c;库存又容易挤压&#xff0c;更加需要有科学的手段去管控日常的…

MyBatis学习 | 缓存机制

文章目录一、一级缓存1.1 简介1.2 一级缓存的失效情况二、二级缓存2.1 简介2.2 二级缓存的使用学习地址&#x1f517; https://www.bilibili.com/video/BV1mW411M737https://www.bilibili.com/video/BV1NE411Q7Nx官网文档 一、一级缓存 1.1 简介 &#x1f4ac;概述&#xff1…

Spring与SpringBoot

目录 前言 1、Spring能做什么 1.1、Spring的能力 1.2、Spring的生态 1.3、Spring5重大升级 1.3.1、响应式编程 1.3.2、内部源码设计 2、为什么用SpringBoot 2.1、SpringBoot优点 2.2、SpringBoot缺点 3、时代背景 3.1、微服务 3.2、分布式 分布式的困难 分布式的…

迪文DGUS智能屏如何轻松实现3D动画

三维立体的视觉效果已经被广泛应用于人机交互中&#xff0c;三维图形逼真的显示效果往往可以更加直接的传递出视觉信息&#xff0c;减少用户的信息解读门槛。 传统的三维立体静态、动态画面的显示往往对于 GPU 的图像处理性能、显示带宽有较高要求&#xff0c;GPU 需要完成图形…

使用gs_probackup进行数据库物理备份与恢复

概述 物理备份与恢复适用于数据量大的场景&#xff0c;主要用于全量数据备份恢复&#xff0c;也可对整个数据库中的WAL归档日志和运行日志进行备份。openGauss提供了三种物理备份与恢复相关的工具&#xff1a;gs_backup、gs_basebackup和gs_probackup。三个工具的对比见下图。…

基于FPGA的时间数字转换(TDC)设计(二)

1、多相位TDC计时FPGA代码设计 接上期的讲解,本期主要讲多相位TDC计时的FPGA代码实现。图1为TDC测量实现系统图。时间信号经过探测器后,转换为电信号,一般探测器出来的信号幅度和脉宽都比较小,需要时间鉴别器进行比较和整形,以便于FPGA能够识别。经过FPGA TDC计时模块后,…

RabbitMQ:订阅模型-消息订阅模式

订阅模型-消息订阅模式&#xff0c;也可以称为广播模式&#xff0c;生产者将消息发送到 Exchange&#xff0c;Exchange 再转发到与之绑定的 Queue中&#xff0c;每个消费者再到自己的 Queue 中取消息。 RabbitMQ 单生产单消费模型主要有以下五个角色构成&#xff1a; 生产者&am…

机器学习10大经典算法详解

“数据算法模型”。 面对具体的问题&#xff0c;选择切合问题的模型进行求解十分重要。有经验的数据科学家根据日常算法的积累&#xff0c;往往能在最短时间内选择更适合该问题的算法&#xff0c;因此构建的模型往往更准确高效。本文归纳了机器学习的10大算法&#xff0c;并分别…

Python基础语法(一)

Python基础语法 文章目录Python基础语法基础语法变量的语法(1) 定义变量(2) 使用变量变量的类型(1) 整数(2) 浮点数(小数)(3) 字符串(4) 布尔(5) 其他动态类型特性输入输出注释通过控制台输出通过控制台输入运算符算术运算符关于除法// 取整除法关系运算符逻辑运算符关于短路求…

美格智能Cat.1无线POS终端解决方案,引领消费支付新场景

近年来&#xff0c;随着我国移动互联网的蓬勃发展和智能手机的快速渗透&#xff0c;移动支付在我国全面普及。尤其是后疫情时代下&#xff0c;无接触观念的普及&#xff0c;使我国消费市场形成了以移动支付为主的消费习惯&#xff0c;并催生了万千移动支付场景终端的数字化、智…