数据类型
一、编程规范
1、缩进
缩进:代码统一缩进4个字符,不采用空格,用tap键控位
#include<stdio.h>
int main()
{
printf("Hi,CSDN!"); /*缩进4字符*/
return 0;/*缩进4字符*/
}
2、变量、常量命名
常量 | 变量 |
---|---|
成员变量:m_ | 统一大写 |
普通变量:相关意义,添加类型的首字母名称首字母要大写 | |
指针变量:标识符前加p,名称首字母要大写 |
#define AGE 20 /*常量*/
int m_iAge; /*成员变量*/
int iNumber; /*普通变量*/
int *pAge; /*指针变量*/
3、函数命名
函数名的首字母要大写,其后大小写混合
int AddTwoNum(int num1,int num2);
4、注释
单行注释
int iLong; //单行注释
多行注释(常用,一般放代码后面)
int pAge; /*多行注释*/
二、关键词
关键字不允许作为标识符出现在程序中
三、标识符
1、标识符是由数字、字母、下划线组成
int go_in2; //true
2、所有标识符必须由字母或下划线开头
不能以数字或符号开头
int 2num; //false
3、在C语言中区分字母大小写
int max; //与下面含义不同
int Max; //与上面含义不同
4、上面也说过,关键字不能作为标识符,C语言区分大小写,所以关键字大写时就不再是关键字,可以看看int和Int的颜色
int int; //false
int Int; //true
5、标识符的命名含义,最好是有一定的含义,不要用缩写
int width; //宽
四、数据类型
五、常量
已经定义了,不能改变的就是常量(自我认为)
常量可以分为三大类:
数值型常量(包括整型和实型)
字符型常量
符号常量
1、数值型常量
(1)整型常量:
分为长整型、短整型、符号整型和无符号整型
L(long)表示长整型
U(unsigned)表示无符号整型
LongNum=1000L; //长整型
UnsignedLongNum=2000u; //无符号整型
后缀不区分大小写
不能重复后缀
LongNum=1000LL; //false
(2)进制表达
a.八进制前缀加“0”,包含数字为0~7
OctaINumber=0123;
前缀要加0 数字在0~7内 不能含有其它数字
b.十进制不需要前缀,包含数字为0~9
AlgorismNumber=12354;
c.十六进制前缀加“0x”,包含数字为0~9
以及A~F
HexNumber=0x123;
HexNumber2=0x3cd;
字母不用区分大小写
2、实型常量
也称为浮点型,由整数和小数组成
(1)科学计数法
用十进制方式表达
SciNum1=123.45;
SciNum2=0.3244;
(2)指数方式
用e或E表示
例如:4500 = 45e2
0.34 = 34e-2
SciNum1=1.2345e2;
SciNum2=3.244e-1;
3、字符常量
(1)字符常量
a.用单引号 ‘’ 表示
b.只能有一个字符
c.区分大小写
d.使用putchar函数进行输出
#include <stdio.h>
int main()
{
putchar('H');
putchar('i');
putchar('!');
return 0;
}
(2)字符串常量
a.用双引号 “” 表示
b.可为空值
#include<stdio.h>
int main()
{
printf("Welcone to CSDN!\n");
return 0;
}
#include<stdio.h>
int main()
{
printf("");
return 0;
}
a、字符常量与字符串常量区别
字符常量 | 字符串常量 |
---|---|
单引号 | 双引号 |
只有一个字符 | 可多个 |
长度只为1 | 长度可任意 |
不可为空 | 可为空 |
字符串常量存储时,系统会自动添加结束标志“\0”,只是不显示而已
字符常量存的是ASCII码,字符串常量不仅存有效字符还要存结束标志“\0”
b、ASCII值
ASCII大多,可以不用记ASCII值
用这代码即可计算
下面也会用字符型变量来算(个人认为这个方法简单)
#include<stdio.h>
int main()
{
char ch='a';
printf("%d\n",(int)ch);
return 0;
}
4、转义字符
转义字符 | 意义 |
---|---|
\n | 换行 |
\t | 横向空位 |
\v | 竖向跳格 |
\b | 退格 |
\r | 回车 |
\f | 走纸换页 |
\\ | 反斜杠“\” |
\’ | 单引号符 |
\a | 鸣铃 |
\ddd | 1~3位八进制所代表字符 |
\xhh | 1~2位十六进制所代表字符 |
5、符号常量
上一篇长方体体积用到过define宏定义,这次用实列来讲
用户输入圆的半径来计算圆的面积
#include<stdio.h>
#define PAI 3.14 //define就是符号常量
int main()
{
float radius; //定义圆的半径
float area=0; //定义圆的面积
printf("请输入圆的半径:");
scanf("%f",&radius);
area=radius*radius*PAI;
printf("圆的面积为:%.2f",area); //.2表示保留两位小数
return 0;
}
这里定义变量也可以使用double,只是float比double消耗内存少,运算快,都是定义小数的
对应的输入或输出值不同
单精度float对应的是“%f”
双精度double对应的是“%lf”
六、变量
定义了,还可以进行改变的就是变量
1、整型变量
可以不用记,就是科普(signed通常省略)
类型 | 关键字 |
---|---|
有符号基本整型 | [signed] int |
无符号基本整型 | unsigned [int] |
有符号短整型 | [signed] short [int] |
无符号短整型 | unsigned short [int] |
有符号长整型 | [signed] long [int] |
无符号长整型 | unsigned long [int] |
#include<stdio.h>
int main()
{
/*signed可省略*/
int a=10; //定义有符号基本整型变量
unsigned b; //定义无符号基本整型变量
short c; //定义有符号短整型 变量
unsigned short d; //定义无符号短整型变量
long e=9; //定义有符号长整型变量
unsigned long f; //定义无符号长整型变量
/*可对变量进行赋值
变量中后赋值的可以覆盖前赋值
看a和e*/
a=1;
b=2;
c=3;
d=4;
e=5;
f=6;
printf(" a=%d\n b=%d\n c=%d\n d=%d\n e=%d\n f=%d",a,b,c,d,e,f) ;
}
2、实型变量
类型名称 | 关键字 |
---|---|
单精度 | float |
双精度 | double |
长双精度 | long double |
关于单 双精度在符号常量就讲了 | |
这里就讲一下长双精度 | |
长双精度字节8位 12位 16位,大多数是16位 | |
对应的输入输出值是“%f” |
3、字符型变量
作用:1、用来存储字符常量的变量(ASCII码值)
2、可进行查询对应ASCII值
占一个字节,取值范围-128~127
对应输入输出符号为“%c”
#include<stdio.h>
int main()
{
/*定义字符型变量和整型变量*/
char ch;
char cd;
char fd;
int fe;
/*为变量赋值*/
ch='a';
cd=97;
fd=97;
fe='a';
/*可进行ASCII查询对应数值*/
printf("%c\n",ch);
printf("%c\n",cd);
printf("%d\n",fd);
printf("%d",fe);
}
七、变量的存储类别
存储类型有两种:
1、静态存储(static):程序运行时为其分配固定的存储空间
2、外部存储(auto):程序运行时需要动态地分配存储空间
1、静态存储(stati)
作用域:限本文件内部调用
#include<stdio.h>
int Add()
{
static int a=1; //定义static整型变量
static double b=1.1; //定义static双精度型变量
a=a+1; //变量加1
b=b+0.9;
printf("%d\n",a);
printf("%.2lf\n",b);
}
int main()
{
printf("第一:");//显示结果
Add(); //调用Add函数
printf("第二:");
Add();
printf("第三:");
Add();
printf("第四:");
Add();
}
2、动态存储(auto)
关键字auto可以省略,如果不特别指定
作用域:函数内部
#include<stdio.h>
int Add()
{
auto int a=1; //定义auto整型变量
auto double b=1.1; //定义auto双精度型变量
a=a+1; //变量加1
b=b+0.9;
printf("%d\n",a);
printf("%.2lf\n",b);
}
int main()
{
printf("第一:");//显示结果
Add(); //调用Add函数
printf("第二:");
Add();
printf("第三:");
Add();
printf("第四:");
Add();
}
3、寄存器(register)
可把某个局部变量指定存放在计算机某个硬件寄存器中,而不是内存
用户无法获得寄存器变量的地址
4、外部(extem)
extern声明程序中将要调用到尚未定义的外部变量
通常,外部存储类都用于声明在另一个转换单元中定义的变量
/*extern1文件中*/
#include<stdio.h>
int main()
{
extern int a; //定义extern整型变量
a=a+10;
printf("%d\n",a);
}
/*extern2文件中*/
#include<stdio.h>
int a=100; //定义一个整型变量
八、混合运算
各类型变量之间的混合运算
例:将整型(int)、字符型(char)、单精度型(float)和双精度型(double)进行相加,再输出结果
#include<stdio.h>
int main()
{
int a=1; //定义整型变量
float b=2.2; //定义单精度变量
double c=3.14; //定义双精度变量
char d='A'; //定义字符型变量 A ASCII值为65
double num=a+b+c+d; //各字符变量的相加
printf("各变量总数为:%.2lf",num);
}
九、实践与练习
1、定义一个整型变量 为其赋值345,使用printf进行输出
2、使用字符型变量,利用ASCII值输出“Good bye!”
3、在自定义的函数中使用静态存储,计算3的立方
4、在文件1中定义外部字符型变量extern,为其赋值为“A” 在文件2中使用这个变量输出
习题答案:https://dxydjrxl.lanzoui.com/iZH35vyu9ih