二进制和进制转换

二进制、八进制、十六进制转换成十进制:按权相加

C语言复习之常量和变量_指针变量

十进制转换成二进制、八进制、十六进制:连续除以基,从低到高记录余数,直至商为0

二进制转换成十六进制:每4个二进制位转换为1个十六进制位(1,2,4,8)

内存大小的单位

二进制位(bit):一位的值可以是0或1

字节(byte):一个字节由8个二进制位组成。最右端的位称为“最低位”,编号为0;最左端的位称为“最高位”,编号为7

TB-GB-MB-byte

常量

在运行时不分配运行空间,值不能被改变的量

整型常量:如 1000,12345,0,-345

实型常量(带小数点):

小数形式:如 0.34,-56.79,0.0

指数形式:如 12.34e3(代表12.34×10^3)

字符常量(使用单引号):

一般字符:如 ’?’

转义字符:如 ’\n’

字符串常量(使用双引号):如 ”boy”

符号常量:#define  PI  3.1416

#include <stdio.h>
#define PI 3.1416
int main()
{
  printf("%d\n", 100);
  printf("%f\n", 10.11);
  printf("%e\n", 1.02e2);
  printf("%c\n", '?');
  printf("%c\n", '\n');
  printf("%s\n", "string");
  printf("%f\n", PI);
  return 0;
}

变量

在运行时分配内存空间、值可以被改变的量

变量名必须是一个标识符。

标识符只能由字母(A——Z,a----z)、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。

类型

类型就是变量要存储的数据的类型,影响变量的内存分配,包括分配的内存空间的大小(占多少字节)以及数据的存储格式

基本类型的大小(32位程序)

基本类型所占位数随可执行文件位数的不同而不同

int:32位,4个字节

long int:32位,4个字节

long long int:64位,8个字节(byte)

char:8位,1个字节

float:32位,4个字节

double(常用):64位,8个字节

?字符型(char)变量存储一个整数,表示这个ASCII码对应的字符,因此是一种整数类型

char 变量在内存中存储的是字符对应的 ASCII 码值。如果以 %c 输出,会根据 ASCII码表转换成对应的字符,如果以 %d 输出,那么还是整数。

int 变量在内存中存储的是整数本身,如果以 %c 输出时,也会根据 ASCII码表转换成对应的字符。

也就是说,ASCII 码表将整数和字符关联。

在char的取值范围内(0-255),字符和整数没有本质区别。

字符肯定是整数,0-255范围内的整数是字符,大于255的整数不是字符。


字符’1’和整数1是不同的概念

字符1在内存中以ASCLL码存储,占8bit

整数1在内存中以整数形式存储,占32bit

变量的内存空间和赋值语句

内存以字节(byte)为单位组成,每个字节有一个地址

C语言复习之常量和变量_十六进制_02

变量定义的语义是:在运行时为变量分配与它类型相对应大小的内存空间。(此内存空间有一个起始地址,这个起始地址就是变量名

访问变量的语义是:根据变量名找到相应的地址,然后读写该地址上的内存空间

通过地址能找到变量对应的内存空间,也就是地址指向该变量,所以地址又叫做指针

赋值表达式:

左表达式=右表达式

先求右表达式的值,然后将这个值存入左表达式所代表的内存空间,在 i=3+5 完成赋值后,变量 i 的值和表达式的值都是8。

赋值操作符是右结合的。 例如,a=b=5和a=(b=5)等价。

赋值语句(;):

变量赋初值相当于定义变量后赋值。

 例如:int i=3;

 相当于:int i;   i=3;

C语言复习之常量和变量_内存空间_03

枚举类型

枚举类型定义中的每一个枚举元素都代表一个整型常量,按顺序依次为0, 1, 2, 3, 4, 5, …

 例如,Weekday中,sun的值为0,

    mon的值为1,…,sat的值为6

枚举元素相当于符号常量,不能对他们赋值

#include <stdio.h>
int main()
{
enum Weekday{mon,tue,wed,thur,fri};
int a;
a=mon;
printf("%d",tue);
return 0;
	
}
指针变量

一个变量的地址称为该变量的指针,如果一个变量专门存放其他变量的地址,称其为指针变量

C语言复习之常量和变量_十六进制_04

指针变量定义的语义:在运行时,为指针变量分配与可执行文件位数相同大小的内存空间,对于32位程序分配32位,对于64位程序分配64位。 注意分配的内存空间大小与基类型没有关系。

两个与指针相关的操作符

&:取地址操作符

C语言复习之常量和变量_内存空间_05

*:解引用操作符(间接访问指向的变量)

p指向变量i,则*p就代表i,类型为int。即变量i有了另一个名字:*p

将数值4送到变量i中有两种方法:

1.将4直接送到变量i中,例如:“i=4;”

2.令变量p指向变量i,然后将4送到变量p所指向的内存空间(即变量i的内存空间),例如:“*p=4;”,其中*p表示p指向的内存空间

常变量

在运行时分配内存空间、值在初始化后不能再被改变的量

eg.const int i=3; const int* p=&i; int* const p=&i;

输出规制

%[flags][width][.precision][size]type

flags表示标示字符,例如减号‘-’表示在给定的输出域宽内左对齐

width表示输出域宽,是一个非负十进制数

 例如:printf("[%-8d]\n", a);

precision表示精度规格,是一个非负十进制数,可以表示浮点数小数点后的位数,默认为6

 例如:printf("[%10.5f]\n", a);

size表示参数大小规格,表示对应参数的大小,例如:h表示short,l(小写L)表示long,ll (小写LL)表示long long


使用scanf时,注意输入格式与格式字符串必须完全匹配。

(1)对于 scanf("a=%f,b=%f,c=%f", &a, &b, &c);

      1 3 2↙                     错

      a=1 b=3 c=2↙        错

      a=1,b=3,c=2↙        对

(2)对于scanf(”%c%c%c”, &c1, &c2, &c3);

      a b c↙      错

      abc↙        对


putchar函数输出字符

char c = ‘a’; putchar(c);

getchar函数输入字符

char c;  c=getchar();