一,常量与变量
1:关键字:
数据类型关键字(12个):
char ,short,long,int,float,double,unsinged,singed,struct,union,enum,void
控制语句关键字(12):
if,else,switch,case,default,for,do,while,break,continue,goto,return,
存储类型关键字(5个):
auto,extern,register,static,const
其它类型关键字(3个):
sizeof,typedef,volatile
#include <stdio.h>
int main(void)
{
// 黄瓜3元/斤 购买5斤
//常量:在程序运行过程中其值不能改变的量 称为常量
const int price = 3; //常量
int weight = 5; //黄瓜重量
//变量:在程序运行过程中其值可以改变的量 称为变量
int sum;
sum = price * weight;
printf("%d元", sum);
return 0;
}
运行结果:15元
#include <stdio.h>
#define PI 3.13159 //圆周率
int main(void)
{
float r = 3.4;
float s = r*r*PI;
float l = 2*PI*r;+
printf("s = %.2f\n", s); //%f 占位符:输出一个浮点数 默认保留6位小数,四舍五入
printf("l = %.2f", l); // ".2"代表保留2位小数
return 0;
}
运行结果:
s = 36.20
l = 21.29
#include <stdio.h>
int main()
{
printf(“long%u\n”,sizeof(long));
printff(“short%u\n”,sizeof(short));
printf(“longlong%u”,sizeof(long long));
return 0;
}
运行结果:
long 4
short 2
long long 8
2,标识符
1:不能使用系统关键字
2:只能用下划线“_”,数字,字母
3:标识符不能数字开头
4:标识符区分大小写
5:见名知义
整型变量的定义和输出、
以char为例:unsigned 0~256
signed -128~127
%u 占位符:表示输出一个整型无符号数据
%x 占位符:输出一个16进制整型数据
%o 占位符:输出一个8进制整型数据
c语言无法直接书写二进制
整型数据的输入:如scanf(“%d”,&a);
必须要用到取地址运算符&
其会从终端界面读取数据赋给a
整型的大小与范围:
sizeof用于计算数据在内存中所占的字节(BYTE)数大小
sizeof返回数据类型为size_t(unsigned int)
一个字节八个位(bit)
注意:整型数据在内存中占的字节数与所选择的操作系统有关。虽然c语言标准中没有明确规定整型数据长度,但long类型整数的长度不能短于int型,short类型长度不能长于int类型
当一个小的整型数据类型赋值给一个大的数据类型,不会出错,因为·编译器会自动转化。但当一个大的类型赋值给一个小的数据类型,那么就可能丢失高位。
3.字符型
字符型变量用于存储一个单一字符,在c语言中用char表示。其中每一个字符变量都会占用一个字节。在字符型变量赋值时,需要用一对英文半角格式的单引号("")把字符括起来。
字符变量实际上并不是把该字符本身放到变量的存储单元去,而是将该字符对应的ASCII编码放到变量的存储单元中。char的本质就是一个1字节大小的整型。
#include <stdio.h>
int main()
{
char ch=‘a’; //字符型变量
printf(“%c\n",ch); //打印字符型变量
printf(“字符型大小:%d\n",sizeof(ch));
return 0;
}
注意:红色字体标注的位不可打印字符。
浮点型数据
实型变量又可称浮点型变量,浮点型变量是用来存储小数数值的,在c语言中,浮点型变量分为两种:单精度浮点型(float)、双精度浮点型(double),但是double型变量比float更精确。
由于浮点型变量是有限的存储单元组成,因此只能提供有限的有效数字。在有效位以外的数字将被舍去。这样可能会产生一些误差。
不以f结尾的常量是double类型,以f结尾的常量如(3.14)
是float类型。
#include <stdio.h>
int main(void)
{
float a = 3.14; //浮点型数据在内存中的格式分为 符号位 指数位 小数位
double b = 3.14;
printf("%.2f\n", a);
printf("%1f\n", b);
return 0;
}
运行结果:
3.14
3.140000
%p 占位符:输出一个16进制无符号数据(如地址)
%e 占位符:输出一个科学计数法表示的数据
4.进制之间的转换
1:十进制转二进制:除二反序取余法:一直除二取余,从最后的余数取到第一个从左到右排成二进制数
2:二进制转十进制:权值法:将一个二进制数从末尾开始乘以2的次幂(从0开始依次加1)
3:二进制转成八进制:将一个二进制数从右到左3个为一组分割成若干组,每一组以2中方式相同的方法得到一个数,然后按顺序排列即得到一个8进制数
4:八进制转二进制:同样地,一个数字位一组,以1中方法得到3位数组成一组的二进制数,并以原来的顺序依次排列成二进制数
5:八进制转10进制:同2方法一样,不过其中的2变为8
6:关于二进制转16进制,及16进制转2进制,同3,4的方法一致,不过是4位数分割一组和一个数字得到4位二进制数字的组罢了
7:16进制转10进制,与1相似,2变为16得结果; 10进制转16进制也是此种套路
进制术语和小数存储方式:
例:
char ch=10
原码:0000 1010
反码:0000 1010
补码:0000 1010
char ch1=-10
原码:1000 1010
反码:1111 0101
补码:1111 0110
二进制是计算机技术中广泛采用的一种 数制二进制数据是用0和1两个数码来表示的数。它的基数为2,进制规则是逢2进1,借位规则是借1当2
当前的计算机系统使用的全都是二进制系统,数据在计算机中主要以补码的形式存储的。
在计算机中,数值一侓用补码来存储主要是因为:
统一了零的编码
将符号位和其它位统一处理
将减法运算转变成加法运算
两个用补码表示的数相加时,如果最高位(位符号)有进位,则进位数被舍弃
数值溢出
例:
char ch=127;
ch=ch+2;
printf("%d",ch);
运行结果为:-127