C语言从头学02——基本语法概念

2024-05-06 20:28

本文主要是介绍C语言从头学02——基本语法概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇文章介绍几个编写C语言程序需要掌握的基本语法概念:
  一、语句
       C语言代码的组成单位是语句(statement),语句是构成程序的基本单位。C语言规定,语句必须使用分号结尾。但有例外,例如,预处理指令#include<stdio.h>结尾就没有";"。
      举例:int a=0; //声明一个命名为 a 的整形变量并赋初值
      一般一个语句占一行,也可以一行写几个语句;还可以一个语句分成几行写都可以。一个语句分成多行时是有要求的,不能将一个命令名、函数名强行段成两行。一个字符串如果太长必须断成两行时,可在断开处用"\"连接。
  二、表达式
      C语言中的表达式是一个用来获取值的计算式,因此表达式都有返回值。例如1+2或者x+y都
  是表达式。表达式可以是语句的组成部分,但表达式不构成一个语句。
 三、语句块
      多个语句用一对"{......}"括起来组成一个块,称为语句块。语句块可以视为一个复合语句,因此语句块执行时会一起依次执行,如此对于提高代码的逻辑性及可读性意义重大。语句块后边无需加";"号,加了也不报错(因为";"构成一个空语句)。
  四、空格
       空格的作用是编译器用来区分不同语法单位的。如果语法单位不用空格就能区分,空格也可以不加;加了是为了增加代码的可读性,阅读起来方便。例如:语句 int a=1;与语句int a = 1;完全等价,int与a之间的空格是必须的,没有空格机器不能确定语句是声明int型变量a还是有一个变量就叫inta;但"a"与"="之间、"="与"1"之间的空格可有可无的。
       空格还用来表示缩进,是代码看起来逻辑更清楚。实际空格的多少对于编译器来说无所谓,但对于我们人看起来有无空格有很大不同。
     还是举个例子:

	 for(int i=0;i<100;i++){int a=i;printf("%d",a);}int x=100;

       由于for循环内的语句有缩进,因此循环内外的语句一眼就能区分开来,比齐头并进的书写方式可读性好很多。
 五、注释
       注释是对代码的说明,编译器会完全忽视注释的存在,但对我们看懂代码有重要作用。C语言注释有两种方式:
       一是"/ * 注释内容 * /"形式。这种注释的位置可以单独占一行或几行,注释内容可以分行写;也可以插在一行内任意地方,但不能插在函数名等关键字中间。
       二是"//注释内容"。这种注释形式只能放到一条语句的最后或者单独占一行也可以,作用仅限在一行内。
  还是举例子说明:

    int / *声明整形类型变量* / x=1; / *注释的作用是很大的* /int y=2; //声明整形变量y并赋值2

这篇关于C语言从头学02——基本语法概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965295

相关文章

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus