C语言的基本语法详解
目录
- 1、标识符与关键字
- 2、常量和符号常量
- (1)常量和常量符号
- (2)变量
- 3、C语言数据类型
- (1)整型常量
- 整型变量
- 原码、反码和补码
- (2)实型数据
- 实型常量
- 实型变量
- 实型变量的定义以及初始化
- (3)字符型数据
- ASCII码
- 字符型变量
- 转义字符字符
- 字符串常量
- 字符串变量
- 总结
1、标识符与关键字
给变量所取的名字叫变量名,定义变量的名字需要遵循标识符的命名规则。
标识符是用来标识变量、符号常量、数组、函数、文件等名字的有效字符序列。
标识符的命名规则:
1.只能由字母、数字和下划线组成(例如:Score1,Stu_name)
2.第一个字符必须为字母或下划线
3.区分大小写字母
4.C语言内部规定的标识符(即关键字)不能作为用户标识
C语言的关键字:
C语言的关键字,是保留的一些特殊作用的词语,一共32个关键字
关键字 | 说明 |
---|---|
auto | 声明自动变量 |
break | 跳出当前循环 |
case | 开关语句分支 |
char | 声明字符型变量或函数返回值类型 |
const | 定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变 |
continue | 结束当前循环,开始下一轮循环 |
default | 开关语句中的"其它"分支 |
do | 循环语句的循环体 |
double | 声明双精度浮点型变量或函数返回值类型 |
enum | 声明枚举类型 |
extern | 声明变量或函数是在其它文件或本文件的其他位置定义 |
float | 声明浮点型变量或函数返回值类型 |
for | 一种循环语句 |
goto | 无条件跳转语句 |
if | 条件语句 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数返回值类型 |
register | 声明寄存器变量 |
return | 子程序返回语句(可以带参数,也可不带参数) |
unsigned | 声明无符号类型变量或函数 |
union | 声明共用体类型 |
void | 声明函数无返回值或无参数,声明无类型指针 |
volatile | 说明变量在程序执行中可被隐含地改变 |
while | 循环语句的循环条件 |
C99新建关键字:
_Bool
、_Complex
、_Imaginary
、inline
、restrict
C11新建关键字:
_Alignas
、_Alignof
、_Atomic
、_Generic
、_Noreturn
、_Static_assert
、_Thread_local
2、常量和符号常量
常量:在程序运行过程中,其值不会发送变化的量。
变量:在程序运行过程中,其值可以发送变化的量
(1)常量和常量符号
C语言提供的常量类型有整型常量、实型常量、字符常量、字符串常量和符号常量。
用一个标识符来代表一个常量,该标识符叫做符号常量,其一般形式为:
#define 标识符 常量
例如:
#define PI 3.1415926
关于typede和defin的用法与区别:
1.#defien是预处理指令,在编译预处理时进行简单替换,不作正确性检查,不管含义是否正确照样带入,只要在编译器已被展开的源程序时才会发现可能的错误并报错。
例如:#define PI 3.1415926
程序:area = PIrr替换3.1415926r
2.rtypedef是在编译时处理的,通常是用于对已有数据类型取别名,而#define只是简单地替换。
例如:typedef unsigned int uint;
这样就为unsigned int型引入新助记符uint,以后使用uint直接代表unsigned int型。
例如:typedef PI 3.1515926;
编译器会直接报错,原因PI并非已存在类型,其次“3.1515926”不符合命名规则。
(2)变量
1.变量在内存中占用一定的储存单元,在该储存单元中存放变量值。
2.程序中用到的所有变量都必须有一个变量名
3.变量名和变量值是两个不同的概念
4.不同类型的变量在内存中占据储存单元的数量及储存的格式不相同,例如:char ch = ‘1';int i = 1;
5.变量必须“先定义后使用”,这样做的目的是:
1、便于编译程序程序检测对该变量的运算是否合法。例如:整型变量可以进行求模(余数)运算,实型变量不可以进行求模运算。
2、程序中变量名的正确使用
3、C语言数据类型
(1)整型常量
整型常量就是整数,有3种表示形式
1.十进制整常数:就是通常整数的写法,数码取值为0-9。例如:25、-623、0等
2.八进制整数:以0为前缀,数码取值0-7,
例如:
020(十六进制16)
016(十六进制14)
0177777(十六进制65535)
-010(十进制数-8)
几种不合法的八进制数:
256(无前缀0)
079(包含了非八进制数码9)
3.十六进制整型常数:以数字和字母0x开头,即0x作为前缀,数码的取值为0-9和A-F(或字母a-f)
几种合法的十六进制数:
0x2A(十进制数42)
0x1AB0(十进制数6832)
几个不合法 的十六进制数:
5A(无前缀)、0x2H(包含了非十六进制数码H)
整型变量
整型变量分为:基本整型、长整型、短整型、无符号型
整型变量的定义及初始化:
定义变量及初始化的一般形式 为:
类型说明符 变量名1 = 值1
例如:
int a,b,c; //定义a,b,c为整型变量 long x = 10; //定义x为长整型变量,并附初值10 unsigned int p=2,q=5,m; //定义p,q,m为无符号整型变量。p赋初值为2,q赋初值为5
整型变量需要注意:
1、允许在一个类型说明符后,定义多个相同类型变量,类型说明符与变量名之间至少用一个空格间隔,各变量名之间用逗号间隔
2、最后一个变量名后面用“;”号结尾
3、变量定义必须放在变量使用之前,一般放在函数体开头
4、没有给变量赋初值,并不意味着该变量中没有数值,只表面给变量中没有确定的值,因此直接使用这种变量的话可能产生莫名其妙的结果,有可能导致运算错误
例程:
#include <stdio.h> void main(void) { int a = 3, b = 5, c, d; c = a+b; d = a-b; printf("a+b=%d,a-b=%d\n",c,d); }
原码、反码和补码
计算机中数分为有符号和无符号。他们是以二进制形式表示的,有三种表示方法,即原码和补码。
三种表示方式由符号位和数值位两部分构成
符号位在最高位,用0表示“正”,1表示“负”。
取余位为数值位
原码:按照二进制的方法来表示数的绝对值,用这个方法得到的就是数的原码。
反码:正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位 按为取反。
补码:正数的补码与其原码相同,负数的补码是将其原码除符号位之外的各位求反之后,在末位再加1
正数的原码、反码。补码相同;负数的原码、反码、补码不同。数值在计算机中以补码形式存放。
例如:求-127的补码
(2)实型数据
实型数据又称为实数或浮点数,指是带有小数部分的非整数数值。
实型常量
在C语言中,实数常量只能用十进制数表示,有两种表示方法:
1.小数形式:由数字0~9和小数点组成,当小数部分为零时,小数点不能省略。例如:0.0/24.4、-56.33等均为合法的实型常量
2.指数形式:由十进制数、加阶码标志小写字母“e”(或大写字母“E”)和阶码(必须是整数)组成。
例如:2.3E5(相当于2.3 x 10^5)
以下是不合法的实型常量:
123(无小数点)
E4(阶码“E”之前无数字)
23.-E3(负号的位置不对)
2.7E(无阶码)
实型变量
实型变量的定义以及初始化
例如:
float a,b,c; //定义a,b,c为单精度实型变量 double m=3.5,n=5.6; //定义m,n为双精度实型变量,并分别赋值3.5和5.6
(3)字符型数据
字符常量是用一对单引号括起来的一个字符
例
如:‘b'、‘z'、‘='、‘?'、‘5'
字符常量特点:
1.字符常量只能是单个字符,不能是多个字符
2.字符常量是以ASCII码形式储存,一个字符常量占用一个字节空间。
ASCII码
ASCII码表示American Standrd Code for Information Interchange。ASCII编码能表示数据范围是00000000~11111111共2^8即256个数据
标准的ASCII码有128个字符,其中:
1.0-31为控制字符,例如,回车换行、文件结束标志、字符串结束标志
2.10个阿拉伯‘0'~‘9'的码值是连续的
3.26个大写字母‘A'-‘Z'是连续的,26和大小写字母‘a'-‘z'是连续的
4.字符常量也可以参与各种运算,如:‘B'-‘A'值为1(字符‘B'的ASCII码值减去66字符‘A'的ASCII码值65结果为1)
字符型变量
1.字符型变量在内存中占用1个字节,只能存放一个字符,并以该字符的ASCII码的值的形式存放
2.在C语言中,一个字符型数据可以按照它的ASCII码进行数据运算
字符型数据储存空间和值范围
类型 | 字节数 | 取值范围 |
---|---|---|
char | 1 | -128~127 |
unsigned char | 1 | 0~255 |
例程:给字符变量赋整数值
#include <stdio.h> int main() { char ch1=65,ch2=66; printf("%c,%c\n",ch1,ch2); printf("%d,%d\n",ch1,ch2); }
转义字符字符
转义字符:是由一个反斜杠“"后跟规定,具有特定含义的字符
常用转义字符如下表
转义字符使用如下:
#include <stdio.h> int main() { printf("\"china\"\n"); printf("My \tCountry.\n"); printf("I am hap\160\x79.\n"); }
字符串常量
字符串常量是简称字符串,是用一对双撇号(西方双引号英文)括起来的一串字符,包含字符的个数和字符长度
例如:“Hello World”。“a”,“C语言”都是字符串常量。
字符串常量和字符常量区别:
1.字符常量是右边单引号括起来的字符,而字符串常量是由双引号括起来的字符。尽管‘a'与“a”都包含一个字符,但在C程序中,它们都具有不同的含义
2.字符常量只能是一个字符,字符串常量可以是多个字符
3.可以把一个字符串常量赋值一个字符变量,但不能把一个字符常量赋值一个字符变量。
字符串变量
在C语言中没有专门的字符串类型,我们只能使用数组或者指针来间接地存储字符串。
char str1[] = "Hello World!" char *str2 = "你好世界!"
str1 和 str2 是字符串的名字,后边的[]和前边的*是固定的写法。初学者暂时可以认为这两种存储方式是等价的,它们都可以通过专用的 puts 函数和通用的 printf 函数输出。
#include <stdio.h> int main() { char web_url[] = "hHello World!"; char *web_name = "你好世界"; puts(web_url); puts(web_name); printf("%s\n%s\n", web_url, web_name); return 0; }
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!