c语言基本语法
1. 语句
c语言的代码由一行行语句组成,语句就是程序执行的命令。c语言规定每条语句必须以分号[^;]结尾,除有明确规定可以不写分号。
int x = 1;
上面就是声明了一个变量,这个变量为x,并把它的初始值设为1。
多个语句也可以写在一行。
int x; x = 1;
一条语句也可以分为多行,这时就要依靠分号来判断语句在哪一行结束。
int
x
=
1
;
但是为了代码的可读性以及整洁性不建议这样写(特殊情况除外)
2. 表达式
c语言的各种计算,主要通过表达式完成,表达式是一个计算式,用来获取值。
1 + 1
上面就是一个表达式,用来获取1 + 1的计算结果,表达式也可以加上分号成为一条语句,但是没有什么实际意义。
表达式与语句的主要区别:
-
语句可以包含表达式,但是表达式本身不构成语句。
-
表达式都有返回值,语句不一定有。因为语句用来执行某个命令,很多时候不需要返回值,比如变量声明语句(
int x = 1
)就没有返回值。
3. 语句块
c语言支持多条语句使用一对大括号[^{}],组成一个块,也叫复合语句。
{
int x;
x = 1;
}
上面就是一个语句块的示例。
注意语句块大括号的后面不需要加分号。
4. 空格
c语言里的空格主要是帮助编译器区分语法单位,如果语法单位不需要添加空格也能区分,空格就不是必须的,只是为了增加代码的可读性。
int x = 1;
//等同于
int x=1;
示例中赋值符号‘=’前后有没有空格都可以,因为编译器在这里不通过空格也能区分语法单位
语法之间也可以有多个空格
int x = 1;
语法之间多个空格等同于一个空格,和单个空格效果一样。
空格还用来表示缩进。多层级的代码有没有缩进,其实对于编译器来说并没有差别,没有缩进的代码也是完全可以运行的。强调代码缩进,只是为了增强代码可读性,便于区分代码块
int main(void){
printf("hello word");
}
5.注释
注释是对代码的说明解释,编译器会完全忽略,也就是说注释对代码没有任何影响。
c语言里面有两种不同的注释方法
第一种是把注释放在[^/
…
/]之间,内部可以分行
/*这是注释*/
/*
这是一行注释
*/
第二种是在[^//]后面写上注释的内容
//这是一行注释
int x;//这也是注释
不管是哪一种注释都不能放在双引号里面,否则编译器会视为这是字符串的一部分
printf("hello/*word*/");
上面示例中,双引号里面的注释符号,都会被视为普通字符,没有注释作用。
6. printf()
6.1基本用法
printf()
函数的作用是将文本输到屏幕,它名字里面的f代表format(格式化),表示可以定制输出文本的格式。
printf("hello word")
示例中将在屏幕上输出”hello word“。
printf()
不会在行尾自动添加换行符,程序运行结束后光标会停留在输出结束的地方,不会自动换行,如果需要换行需要添加一个换行符[^\n]
printf("hello word\n");
printf()
是在标准库的头文件[
stdio.h]定义的,使用该函数之前需包含头文件[
#include <stdio.h>]。
6.2 占位符
printf()
参数与占位符是一一对应关系,如果有
n
个占位符,
printf()
的参数就应该有
n + 1
个。如果参数个数少于对应的占位符,
printf()
可能会输出内存中的任意值。
printf()
函数的占位符有许多种类,与c语言的数据类型相对应。下面按照字母排序,列出常见的占位符
-
%a
:浮点数。 -
%A
:浮点数。 -
%c
:字符。 -
%d
:十进制整数。 -
%e
:使用科学计数法的浮点数,指数部分的
e
为小写。 -
%E
:使用科学计数法的浮点数,指数部分的
E
为大写。 -
%i
:整数,基本等同于
%d
。 -
%f
:小数(包含
float
类型和
double
类型)。 -
%g
:6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的
e
为小写。 -
%G
:等同于
%g
,唯一的区别是指数部分的
E
为大写。 -
%hd
:十进制 short int 类型。 -
%ho
:八进制 short int 类型。 -
%hx
:十六进制 short int 类型。 -
%hu
:unsigned short int 类型。 -
%ld
:十进制 long int 类型。 -
%lo
:八进制 long int 类型。 -
%lx
:十六进制 long int 类型。 -
%lu
:unsigned long int 类型。 -
%lld
:十进制 long long int 类型。 -
%llo
:八进制 long long int 类型。 -
%llx
:十六进制 long long int 类型。 -
%llu
:unsigned long long int 类型。 -
%Le
:科学计数法表示的 long double 类型浮点数。 -
%Lf
:long double 类型浮点数。 -
%n
:已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。 -
%o
:八进制整数。 -
%p
:指针。 -
%s
:字符串。 -
%u
:无符号整数(unsigned int)。 -
%x
:十六进制整数。 -
%zd
:
size_t
类型。 -
%%
:输出一个百分号。
7. 标准库,头文件
程序需要用到的功能,不一定需要自己编写,C 语言可能已经自带了。程序员只要去调用这些自带的功能,就省得自己编写代码了。举例来说,
printf()
这个函数就是 C 语言自带的,只要去调用它,就能实现在屏幕上输出内容。
C 语言自带的所有这些功能,统称为“标准库”,因为它们是写入标准的,到底包括哪些功能,应该怎么使用的,都是规定好的,这样才能保证代码的规范和可移植。
不同的功能定义在不同的文件里面,这些文件统称为“头文件”。如果系统自带某一个功能,就一定还会自带描述这个功能的头文件,比如
printf()
的头文件就是系统自带的
stdio.h
。头文件的后缀通常是
.h
。
如果要使用某个功能,就必须先加载对应的头文件,加载使用的是
#include
命令。这就是为什么使用
printf()
之前,必须先加载
stdio.h
的原因。