c语言基础-变量类型和定义
一、常量与变量
常量:固定的一个值 例如1 2 3 A B
变量:一个固定的内存地址,其中存储的值可以变化,这个地址的名字在程序体现就是变量
例子:
#include “stdio.h”
int main(void)
{
int a = 6; // a 是一个变量 = 赋值号 6 是一个常量
// 将常量6赋值给变量a
a = 7; // 变量的值是可以修改的
return 0;
}
二、变量的命名规则
1、变量名由字母、数字、下划线组成
2、不能以数字开头
3、不能用关键字
4、区分大小写
5、命名尽量用英文单词或缩写 比如要定义一个变量接收数据 int rec;
6、函数名和变量名的命名规则:
匈牙利法:一般变量名前面加上类型的第一个字母,可以直观的知道这个变量的类型
int ixyd = 6;
float fguoao = 7.5;
大驼峰法:名称所有的英文单词或缩写第一个字母都大写
int RecData;
小驼峰法:名称的第一个单词首字母不用大写
int recData;
下划线:
int rec_data;
三、变量类型
表示一个数据(变量)占用存储空间的大小和格式
变量类型都有哪些:
整型: int
长整型: long
短整型 :short
字符型:char
浮点型:单精度浮点型 float 双精度浮点型 double
空类型:void
自定义类型:共用体 结构体 struct 枚举 enum 数组 指针
变量类型的存储空间:
sizeof() 关键字 用于求数据所占内存的空间大小,以字节为单位
例子:
#include “stdio.h”
int main(void)
{
printf("%d\n",sizeof(int)); // 4 整型输出 %d
printf("%d\n", sizeof(short)); // 2
printf("%d\n", sizeof(long)); // 4
printf("%d\n", sizeof(char)); // 1
printf("%d\n", sizeof(float)); // 4
printf("%d\n", sizeof(double)); // 8
return 0;
}
四、变量的表示范围
计算机当中数据是以二进制存储的 0 1
以char型为例 char型占1字节
1Byte=8bit
1K=1024Byte
1M=1024K
1G=1024M
1T=1024G
char型 1字节8位
0000 0000 最小
1111 1111 最大
这都是二进制
二进制 <–> 十进制
8421
1001 0011 这是一个二进制
1 0 0 1 0 0 1 1 二进制
128 64 32 16 8 4 2 1 权数
128 + 16 + 2 + 1 = 147
十进制怎么转二进制:
63 --> 二进制 ??
63最大不超过64
63 - 32 余 31
31 - 16 余 15
15 - 8 余 7
7 - 4 余 3
3 - 2 余 1
1 - 1 余 0
128 64 32 16 8 4 2 1 权数
0 0 1 1 1 1 1 1
结果为 0011 1111
二进制 – 十进制 – 十六进制的转换
二进制转16进制 4位表示一个16进制
十进制转16进制 将十进制先转成二进制,然后再转成16进制
0011 1111 --> 十六进制: 0x或H表示十六进制
表:
十进制 二进制 十六进制
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
char型占1字节 8个位
最小 0000 0000 0
最大 1111 1111 255
变量的类型不同,所表示的范围不同
char 0~255 在无符号的情况下
变量类型有 有符号和无符号的区分
signed 有符号
unsigned 无符号
负数怎么表示:
以char型为例:8位
用最高位表示符号位
0 表示为正
1 表示为负
unsigned char a; (a的数值范围0~255)
| x x x x x x x x | x都是数值位
signed char a; (a的数值范围-128~+127)
| s x x x x x x x | s是符号位(s=0,1) x都是数值位
0111 1111 +127
1111 1111 -127
1000 0000 和 0000 0000 都表示0 表示-128(这跟负数的存储方式有关,负数用补码存储,补码反码的概念)
1、char 占1字节 8位
范围 如果是unsigned char 8位都是数值位 0~255
如果是signed char 最高位符号位 7个数值位 -128~+127
2、int型:
在32位芯片和编译器上int占4字节
4字节 32位
xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
2^31 2^0
unsigned int a; a的范围0~4294967295
signed int a; a的范围-2147483648~+2147483647
注意:
在定义变量的时候注意变量的范围:
unsigned char a= 128; 对
signed char a=128; 错
五、不同类型变量的定义
#include “stdio.h”
int main(void)
{
int a = 4,b=-7; // int 如果没有用signed/unsigned修饰 默认是signed int
short c = -9;
long g = 10;
unsigned int d = 8;
float e = 3.1415;
double f = 8.9837289;
printf("a=%d\nb=%d\ng=%ld\nd=%u\ne=%f\nf=%e\n",a,b,c,g,d,e,f);
getchar();
return 0;
}
%a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)
%c 字符
%d 有符号十进制整数
%f 浮点数(包括float和doulbe)
%e(%E) 浮点数指数输出[e-(E-)记数法]
%g(%G) 浮点数不显无意义的零"0"
%i 有符号十进制整数(与%d相同)
%u 无符号十进制整数
%o 八进制整数 e.g. 0123
%x(%X) 十六进制整数0f(0F) e.g. 0x1234
%p 指针
%s 字符串
%% “%”
六、举一个char型变量的定义详细例子
char 字符型变量
字符型常量用’'括起来
字符遵循ASCII码(美国信息交换标准代码)
0~9 A~Z a~z ! $ * 控制字符………………
每一个字符对应一个数值,计算机只能存0/1,一个字符用数值来存储
常用的ASCII:
字符 ‘0’ 48
字符 ‘A’ 65
字符 ‘a’ 97
#include “stdio.h”
int main(void)
{
char xyd = ‘a’;
printf("%c\n",xyd);
printf("%d\n", xyd);
getchar();
return 0;
}
// 从键盘任意输入一个字符,如果是大写就转换为小写,如果是小写,就转为大写
#include “stdio.h”
int main(void)
{
unsigned char rec;
printf("请输入要转换的字符:\n");
scanf("%c",&rec); //标准格式化的输入,逗号后面是存储输入数据的地址
getchar();
if (rec >= 'a' && rec <= 'z')
{
rec -= 32;
}
else if (rec >= 'A' && rec <= 'Z')
{
rec += 32;
}
printf("\n转换结果为:%c\n",rec);
getchar();
return 0;
}
// 从键盘任意输入一个字符,如果是大写就转换为小写,如果是小写,就转为大写
#include “stdio.h”
int main(void)
{
unsigned char rec;
printf("请输入要转换的字符:\n");
scanf("%c",&rec); //标准格式化的输入,逗号后面是存储输入数据的地址
getchar();
if (rec >= 97 && rec <= 122)
{
rec -= 32;
}
else if (rec >= 65 && rec <= 90)
{
rec += 32;
}
printf("\n转换结果为:%c\n",rec);
getchar();
return 0;
}