一、常量和变量
常量:在程序运行过程中,其值不能发生改变的量 称为常量
定义常量方式:
const 数据类型 常量名 = 值 (不安全)
#define 常量名 值
变量: 在程序运行过程中,其值可以发生改变的量,称为变量
定义格式:
数据类型 变量 = 值
二、 代码
#include <stdio.h>
int main()
{
// 黄瓜 3元/斤 购买五斤
// 常量 在程序运行过程中, 其值不能发生改变的量
const int price = 3; // 常量,只读变量
// 变量 在程序运行过程中,其值可以发生改变的量
int weight = 5;
int sum = price * weight;
printf("%d\n", price);
printf("总价为: %d\n", sum);
return 0;
}
#include <stdio.h>
// 宏定义常量
#define PI 3.14159
// 圆的面积 s = pi * r * r
// 圆的周长 l = 2 * pi * r
int main()
{
// 常量pi
// const 数据类型 常量名 = 值
// const float pi = 3.14159;
// 在定义局部变量是可以在数据类型前加修饰auto, 也可以不加
auto float r = 3.4;
float s = PI * r * r;
float l = 2 * PI * r;
// 占位符%f 表示一个浮点型float 默认保留6位小数 会四舍五入
printf("圆的面积: %.2f\n", s);
printf("圆的周长:%f\n", l);
// 标识符 : 定义的变量或常量
// 1、不能使用系统关键字
// 2、允许使用字母、数字、下划线
// 3、不允许数字开头
// 4、标识符区分大小写
// 5、见名知义
return 0;
}
三、整型
有符号和无符号
有符号:可以输出正数和负数
无符号:可以输出正数, 输出负数为乱码
#include <stdio.h>
int main()
{
// 数据类型 标识符 = 值
// 无符号 unsigned 有符号 signed
// signed int a = -10;
unsigned int a = -10;
// %u : 占位符 表示输出一个无符号十进制整型数据
// %d :
printf("%u\n", a);
main2(); // 调用main2()函数
return 0;
}
int main2(void)
{
printf("---进制学习---\n");
// 进制
// 二进制0-1 八进制0-7 十六进制0-9 10-15(a-f A-F)
int a = 10;
printf("%d\n", a);// 十进制输出
printf("%x\n", a);// 十六进制输出 %x 是小写输出 &X 是大写输出
printf("%o\n", a);// 八进制输出
printf("***************\n");
int b = 0123; // 定义八进制数据 以0开头
int c = 0xabc; // 定义十六进制 以0x 或 0X开头
// 在计算机定义数据时,不可以直接定义二进制
printf("%d\n", b);
printf("%o\n", b);
printf("%x\n", b);
printf("%d\n", c);
printf("%o\n", c);
printf("%x\n", c);
}
四、整型输入
scanf() 安全解决办法:
1、 #define _CRT_SECURE_NO_WARNINGS // 解除警告 必须放在程序的第一行
2、#pragma warning(disable:4996) // 解除警告的第二种写法
//#define _CRT_SECURE_NO_WARNINGS // 解除警告 必须放在程序的第一行
#include <stdio.h>
#pragma warning(disable:4996) // 解除警告的第二种写法
int main()
{
int a;
// 通过键盘输入赋值
// & 运算符,表示取地址运算符
scanf("%d", &a);
printf("%d\n", a);
return 0;
}
五、整型大小和取值范围
#include <stdio.h>
int main()
{
int a = 10; // 整型变量
short b = 20; // 短整型变量
long c = 30; // 长整型变量
long long d = 40; // 长长整型变量
// short <= int <=long < longlong
printf("%d\n", a);
printf("%hd\n", b);// %hd 为占位符,表示输出一个短整型数据
printf("%ld\n", c);// %ld 为占位符,表示输出一个长整型数据
printf("%lld\n", d); // %lld 为占位符, 表示输出一个长长整型数据
// sizeof 计算数据类型在内存中占的字节(byte)大小 返回值类型是size_t
// 1B = 8bit
// sizeof(数据类型) sizeof(变量名) sizeof 变量名
unsigned int len = sizeof(short);
printf("%u\n", len);
printf("-----------------\n");
printf("%d\n", sizeof(a));// 4 = 32 bit
printf("%hd\n", sizeof(b)); // 2
printf("%ld\n", sizeof(c)); // 4
printf("%lld\n", sizeof(d)); // 8
return 0;
}
六、字符型
#include <stdio.h>
int main()
{
// 字符变量
char ch = 'a';
// 字符 0 对应48 大写A 对应65 小写a 对应97 空格对应 32
//打印字符变量
printf("%c\n", ch);
// 打印字母a 对应的十进制数
printf("%d\n", ch); // 97
printf("%d\n", sizeof(ch));
char ch1 = 'a';
char ch2 = 'A';
printf("%d\n", ch1 - ch2);
printf("----------------------\n");
char ch3;
scanf("c", &ch3);
printf("%c\n", ch3 - 32);
// 打印百分号需要使用 %%
printf("30%%");
return 0;
}
七、字符型
#include <stdio.h>
int main()
{
// 不以结尾的默认是double类型
float a = 3.14f;
double b = 3.14;
printf("%f\n", a); // 默认保留6位小数
printf("%.2f\n", a); //保留2位小数
printf("%lf\n", b);
// sizeof字节大小
// 浮点型数据,存储在内存中的格式位: 符号位 指数位 小数位
printf("%d\n", sizeof(float)); //4
printf("%d\n", sizeof(double)); //8
// 通过占位符查找内存地址
int c = 10;
float d = 3.14;
// %p 占位符 表示输出一个变量对应的内存地址编号(无符号十六进制整型)
printf("%p\n", &c);
printf("%p\n", &d);
// 大小端对齐
// 科学计数法
float e = 0.12345;
printf("%e\n", e);
float f = 3.2e3f;
printf("%f\n", f);
return 0;
}