c语言基础-变量类型和定义

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;

}


版权声明:本文为xukong1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。