【变量与运算符】C语言(一)
C语言简介
C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现。
C语言的特点:
- 结构化
- 高效率
- 可以处理底层的活动。
- 可以在多种计算机平台上编译。
C的实际应用:
- 操作系统
- 语言编译器
- 汇编器
- 文本编辑器
- 打印机
- 网络驱动器
- 现代程序
- 数据库
- 语言解释器
- 实体工具
UNIX 操作系统,C编译器,和几乎所有的 UNIX 应用程序都是用 C 语言编写的。由于各种原因,C 语言现在已经成为一种广泛使用的专业语言。当今最流行的 Linux 操作系统和 RDBMS(Relational Database Management System:关系数据库管理系统) MySQL 都是使用 C 语言编写的。
C语言数据类型
C语言变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。
- 整数类型
- char在C语言中视为整数类型
- signed是指的有符号,即有负数 ,unsigned是无符号的,即没有负数
- 浮点类型
-
常用基本数据类型占用空间(64位机器为例)
- char : 1个字节
- int :4个字节
- float:4个字节
- double:8个字节
- 基本类型书写
整数
- a,默认为10进制 ,10 ,20。
- b,以0开头为8进制,045,021。
- c.,以0b开头为2进制,0b11101101。
- d,以0x开头为16进制,0x21458adf。
小数
单精度常量:2.3f 。
双精度常量:2.3,默认为双精度。
字符型常量
用英文单引号括起来,只保存一个字符'a'、'b' 、'*' ,还有转义字符 '\n' 、'\t'。
字符串常量
用英文的双引号引起来 可以保存多个字符:"abc"。
C变量
基本变量类型
C中的变量定义
type variable_list;
int i, j, k;
char c, ch;
float f, salary;
double d;
C中的变量初始化
extern int d = 3, f = 5; // d 和 f 的声明与初始化
int d = 3, f = 5; // 定义并初始化 d 和 f
byte z = 22; // 定义并初始化 z
char x = 'x'; // 变量 x 的值为 'x'
C中的变量声明
extern int i; //声明,不是定义
int i; //声明,也是定义
C 常量
- 定义常量(常量名一般全部大写)
1、使用#define预处理器
#define identifier value
(预处理命令不需要分号)
#include <stdio.h>
#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'
int main()
{
int area;
area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);
return 0;
}
2、使用const关键字
const type variable = value;
#include <stdio.h>
int main()
{
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '\n';
int area;
area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);
return 0;
}
C存储类
存储类定义 C 程序中变量/函数的范围(可见性)和生命周期
这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类:
- auto
auto 存储类是所有局部变量默认的存储类。auto 只能用在函数内,即 auto 只能修饰局部变量。
- register
register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。寄存器只用于需要快速访问的变量,比如计数器
- static
static 是全局变量的默认存储类。使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
- extern
extern 是用来在另一个文件中声明一个全局变量或函数。
C运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 杂项运算符
算术运算符
c = a++ 先赋值后运算
c = ++a 先运算后赋值
#include <stdio.h>
int main()
{
int c;
int a = 10;
c = a++;
printf("先赋值后运算:\n");
printf("Line 1 - c 的值是 %d\n", c );
printf("Line 2 - a 的值是 %d\n", a );
a = 10;
c = a--;
printf("Line 3 - c 的值是 %d\n", c );
printf("Line 4 - a 的值是 %d\n", a );
printf("先运算后赋值:\n");
a = 10;
c = ++a;
printf("Line 5 - c 的值是 %d\n", c );
printf("Line 6 - a 的值是 %d\n", a );
a = 10;
c = --a;
printf("Line 7 - c 的值是 %d\n", c );
printf("Line 8 - a 的值是 %d\n", a );
}
以上程序结果:
先赋值后运算:
Line 1 - c 的值是 10
Line 2 - a 的值是 11
Line 3 - c 的值是 10
Line 4 - a 的值是 9
先运算后赋值:
Line 5 - c 的值是 11
Line 6 - a 的值是 11
Line 7 - c 的值是 9
Line 8 - a 的值是 9
关系运算符
逻辑运算符
位运算符
- & 按位与
- | 按位或
- ^ 异或
- ~ 取反
- << 左移(左边的二进制位丢弃,右边补0)
- >> 右移(正数左补0,负数左补1,右边丢弃。)
例:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
赋值运算符
其它重要的运算符
#include <stdio.h>
int main()
{
int a = 4;
short b;
double c;
int* ptr;
/* sizeof 运算符实例 */
printf("Line 1 - 变量 a 的大小 = %lu\n", sizeof(a) );
printf("Line 2 - 变量 b 的大小 = %lu\n", sizeof(b) );
printf("Line 3 - 变量 c 的大小 = %lu\n", sizeof(c) );
/* & 和 * 运算符实例 */
ptr = &a; /* 'ptr' 现在包含 'a' 的地址 */
printf("a 的值是 %d\n", a);
printf("*ptr 是 %d\n", *ptr);
/* 三元运算符实例 */
a = 10;
b = (a == 1) ? 20: 30;
printf( "b 的值是 %d\n", b );
b = (a == 10) ? 20: 30;
printf( "b 的值是 %d\n", b );
}
上述代码输出:
Line 1 - 变量 a 的大小 = 4
Line 2 - 变量 b 的大小 = 2
Line 3 - 变量 c 的大小 = 8
a 的值是 4
*ptr 是 4
b 的值是 30
b 的值是 20