c语言基本语法

  • Post author:
  • Post category:其他




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

的原因。



版权声明:本文为qq_46192359原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。