给变量所取的名字叫变量名,定义变量的名字需要遵循标识符的命名规则。
标识符是用来标识变量、符号常量、数组、函数、文件等名字的有效字符序列。
标识符的命名规则:
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
常量:在程序运行过程中,其值不会发送变化的量。
变量:在程序运行过程中,其值可以发送变化的量
C语言提供的常量类型有整型常量、实型常量、字符常量、字符串常量和符号常量。
用一个标识符来代表一个常量,该标识符叫做符号常量,其一般形式为:
#define 标识符 常量
例如:
#define PI 3.1415926
关于typede和defin的用法与区别:
整型常量就是整数,有3种表示形式
整型变量分为:基本整型、长整型、短整型、无符号型
整型变量的定义及初始化:
定义变量及初始化的一般形式 为:
类型说明符 变量名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的补码
实型数据又称为实数或浮点数,指是带有小数部分的非整数数值。
在C语言中,实数常量只能用十进制数表示,有两种表示方法:
例如:
float a,b,c; //定义a,b,c为单精度实型变量 double m=3.5,n=5.6; //定义m,n为双精度实型变量,并分别赋值3.5和5.6
字符常量是用一对单引号括起来的一个字符
例如:‘b’、‘z’、‘=’、‘?’、‘5’
字符常量特点:
ASCII码表示American Standrd Code for Information Interchange。ASCII编码能表示数据范围是00000000~11111111共2^8即256个数据
标准的ASCII码有128个字符,其中:
字符型数据储存空间和值范围
类型 | 字节数 | 取值范围 |
---|---|---|
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语言”都是字符串常量。
字符串常量和字符常量区别:
在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; }