C语言程序设计
文章目录
2.1 常量与变量
常量顾名思义就是在程序中不能改变其值的量。变量则是在程序执行过程中可以改变值的量。
2.1.1 常量 (Constant)
常量分为:整数常量、实型常量、字符型常量、字符串字面量和枚举常量。 具体的:- 整数常量 unsigned int (U)、int、unsigned short、short、long(L)、unsigned long(UL)
- 实型常量 float(单精度)、double(双精度)、long double(长双精度)
- 字符常量 char
- 字符串字面量 string literal(C中没有明确的字符串类型,一般有char数组表示char*)
- 枚举常量 enum
2.1.2 变量(Variable)
在C语言程序中,变量在使用前必须先定义。
定义变量的一般形式为: 类型关键字 变量名
int main(void)
{
int a; //用int指定变量a的类型
float b; //用float指定b的类型
char c; // 用char指定c的类型
a = 1; // 为int型变量a赋值整型常量1
b = 2.5; //为float型变量赋值实型常量2.5
c = 'A'; //为char型变量赋值字符常量‘A’
return 0; //返回0(代表正常退出)
}
- 变量名(标识符)命名规则:
- 标识符只能由数字、英文字母和下划线组成,建议使用驼峰法命名变量,例如:Accumulate_Sum
- 标识符必须使用字母和下划线开头。
- 标识符不能使用C语言的内定关键字作为标识符
- 标识符可以包含多个字符,但是有最大限度,一般由编译器决定,但是大多是情况下无需考虑此限制。
- 标识符区分大小写 ,SUM和sum
- 如果定义一个变量后。未对它进行初始化,则该变量的值是一个随机数(静态变量和全局变量除外)
- int a,b,c;可以,int a = 0,b = 0,c = 0;可以,int a = b = c = 0;不可以,出现编译错误
2.2 简单屏幕输出
代码如下(示例):
#include<stdio.h>
int main(void)
{
int a; //用int指定变量a的类型
float b; //用float指定b的类型
char c; // 用char指定c的类型
a = 1; // 为int型变量a赋值整型常量1
b = 2.5; //为float型变量赋值实型常量2.5
c = 'A'; //为char型变量赋值字符常量‘A’
printf("a = %d\n",a);
printf("b = %f\n",b);
printf("c = %c\n",c);
return 0; //返回0(代表正常退出)
}
其中#include<stdio.h>
是C语言的编译预处理命令(Preprocessor Directives),当C语言程序经过cpp预处理时会将相应的头文件引入,尖括号内的文件成为头文件,stdio.h 为C语言的标准IO库头文件。(详细C语言程序处理程序可以参考csapp)
%d,%f,%c表示格式字符。
- %d 表示十进制整型格式输出变量的值
- %c 表示输出字符型变量的值(一个字符)
- %f 表示十进制小数格式输出变量的值 ,%.2f表示小数点后保留两位小数
2.3 计算变量或数据类型在内存中所占大小
代码如下(示例):
#include<stdio.h>
int main(void)
{
printf("char size in memory is %d\n",sizeof(char));
printf("int size in memory is %d\n",sizeof(int));
printf("float size in memory is %d\n",sizeof(float));
}
sizeof 不是函数名,而是C语言的关键字。返回指定数据类型的字节数。
2.4 赋值运算符
在C语言中算数运算符是左结合的,而赋值运算符是右结合的。x = x*y/z //从左向右运算
a = b = c = 0;
(a = (b = (c = 0)));//与上一条语句的效果一致,体现了赋值的右结合
2.5 本章错误小结
常见错误示例 | 常见错误描述 | 错误类型 |
---|---|---|
– | 变量未定义就使用 | 编译错误 |
int Value ;value = 0; | 忽视了变量区分大小写 | 编译错误 |
printf(“Input n:”); int n; | 在可执行语句之后定义变量 | 编译错误 |
int n =3.5; | 初始化变量时,赋值常量的类型与定义变量的类型不同 | 有的编译器不提示错误 |
int m=n=0; | 在定义变量时,对多个变量进行连续赋初值 | 编译错误 |