本人为刚入门编程小白一枚,此博客用于记录学习过程和一些心得,如有错误,欢迎各位大佬朋友指正!(*^▽^*)
常量与变量
C语言程序处理数据有常量和变量两种形式。
常量即不能改变的其值的量,可划分为:整形常量(包括正整数、负整数和零在内的所有整数)、实型常量(可称为实数、浮点数简单点说即为小数 )、字符型常量(用一对单引号括起来的任意字符,如:'x'、'0'、'abc'等)、字符串字面量(用一对双引号括起来的零个或多个字符,零个字符称为空串即"")和枚举常量。
变量不同于变量,其值在执行过程中是可以改变的。在C语言中,变量在使用前必须先定义。定义变量的一般形式为:类型关键字 变量名;这里的关键字是C语言预先规定的、具有特殊意义的单词。用于声明变量的类型,决定了编译器为其分配内存单元的字节数。
常见数据类型关键字(表1):
关键字 | 作用 | |
1 | int | 声明整型变量或函数 |
2 | short | 声明短整型变量或函数 |
3 | long | 声明长整型变量或函数 |
4 | char | 声明字符类型变量或函数 |
5 | float | 声明浮点型变量或函数 |
6 | double | 声明双精度变量或函数 |
7 | struct | 声明结构体变量或函数 |
8 | union | 声明共用体数据类型 |
9 | enum | 声明枚举类型数据类型 |
10 | signed | 声明有符号类型变量或函数 |
11 | unsigned | 声明无符号类型变量或函数 |
12 | void | 声明函数无返回值或无参数,声明无类型指针 |
常见控制语句关键字(表2):
| 控制语句关键字 | 作用 |
条件语句 |
|
|
1 | if | 条件语句 |
2 | else | 条件语句否定分支(与if连用) |
3 | goto | 无条件跳转语句(很少用) |
循环语句 |
|
|
4 | do | 循环语句的循环体 |
5 | while | 循环语句的循环条件 |
6 | break | 跳出当前循环 |
7 | continue | 结束当前循环,开始下一轮循环 |
8 | for | 循环语句 |
开关语句 |
|
|
9 | switch | 用于开关语句(多分支选择语句) |
10 | case | 开关语句分支 |
11 | default | 开关语句中的“其他”分支 |
返回语句 |
|
|
12 | return | 子程序返回语句(可以带参数,也可不带参数)循环条件 |
例 : int a; //用关键字int指定变量a为int整型类型
float b; //用关键字float指定变量b为float浮点类型
char c; //用关键字char指定变量c为字符类型
a=1; //为int整型变量类型a赋值为整型常量1
变量名是由用户定义的标识符,用于存放数据。变量名应遵循变量规则:
- 只能由英文字母 、数字、下划线组成
- 必须以字母或下划线开头
- 不允许使用C语言关键字作为标识符变量名
注意:标识符是区分大小写的即大小写敏感。
数据类型
由于不同类型的数据在内存中占用不同大小的储存单元,因此它们所能表示的数据的取值范围各不相同,数据类型的取值范围不仅与操作系统相关,还和编译器相关。常见数据类型见表1。在定义整型变量时,只要不指定为无符号型,其隐含的类型就是有符号型(signed),而signed通常省略不写。
计算变量或数据类型所占空间的大小
先简单了解一下如何衡量变量或数据类型所占内存空间的大小。在程序设计语言中,通常用字节数衡量变量或数据类型所占内存空间的大小。一个字节可以表示的整数最小为0,最大为225,1个字节等于8个 二进制位(bit),也称比特。bit是二进制数binary digit的缩写,是衡量物理存储器容量的最小单位。一个二进制的值只能是0或1,所以必须将许多的位结合起来使用,常以8个位来表示数据,可以表示0~255(2º-1~2ⁿ-1 n=8)之间的数字,称8个位为一个字节。
要想准确计算某种类型数据所占内存空间的字节数,需要使用sizeof()运算符。注:sizeof是C语言的关键字而不是函数名。
简单输出
使用到printf()函数。
例:
#include<stdio.h>
int main(){
int a=1;
float b=2.0;
char c='p';
printf("a=%d\n",a);
printf("b=%f\n",b);
printf("c=%c\n",c);
return 0;
}
编译执行后输出如下结果:
a=1
b=2.000000
c=p
变量的赋值和赋值运算符
赋值运算符用于给变量赋值,由赋值运算符及其两侧的操作数组成的表达式成为赋值表达式。
例 :给变量x赋值为1,写成赋值表达式即为:
x=1;
书写形式与数学中等号相同,但本质含义不同。赋值运算符的含义是将赋值运算符右侧表达式的值赋给左侧的变量,赋值远算是有方向性的,并无“等号两侧值相等”的含义。
注:
- 像a+b=c这样在数学上有意义的等式在C语言中是不合法的
- 像c=c+1这样在数学上无解的等式在C语言中是有意义的,该语句的含义为:取出该x的值加一后再赋值给x,即x自增1。也可简写为c+=1。
- 赋值运算符是右结合的。如:a=b=c=0;和a=(b=(c=0));是等价的。
本节常见错误
- 变量未定义就使用
- 忽视变量是区分大小写的
- 在可执行语句之后再对变量定义
- 定义时,用于变量初始化的常量类型于定义的变量类型不一致 如:int a=1.2;
- 定义变量时,对 多个变量进行连续赋初值 如:int a=b=1;