【变量与运算符】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语言变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

【变量与运算符】C语言(一)

  • 整数类型
  • char在C语言中视为整数类型
  • signed是指的有符号,即有负数 ,unsigned是无符号的,即没有负数

【变量与运算符】C语言(一)

  • 浮点类型

【变量与运算符】C语言(一)

  • 常用基本数据类型占用空间(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语言(一)

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语言(一)

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

 

关系运算符

【变量与运算符】C语言(一)

 

逻辑运算符

【变量与运算符】C语言(一)

 

位运算符

【变量与运算符】C语言(一)

  • & 按位与
  • | 按位或
  • ^ 异或
  • ~ 取反
  • << 左移(左边的二进制位丢弃,右边补0)
  • >> 右移(正数左补0,负数左补1,右边丢弃。)

例:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

 

赋值运算符

【变量与运算符】C语言(一)

 

其它重要的运算符

【变量与运算符】C语言(一)

#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