一:基础语法认知:|变量|常量|数据类型|
变量与常量,数据类型认知升维
C语言中各种变量的定义及数据类型的认知:
一般而言,在譬如C等高级编程语言中,我们定义不同的类型的变量,需要不同的数据类型来进行声明,不同类型的数据类型声明的变量占用的内存空间不一样;
而数据类型大致分为两种:
(1)内置的基本数据类型:数字类型,字符型,布尔型等
(2)自定义的数据类型: 如结构体类型,共用体类型,指针类型,枚举类型,数据类型等
变量定义语法规则:
(1)先声明,再赋值
数据类型 变量名称; // 声明变量
变量 = 变量的值; // 给变量赋值
C语言的语句以分号“;”语句的结束标识
(2)变量声明同时进行赋值
数据类型 变量名称 = 变量的值
(3)同时定义多个变量并赋值
数据类型 变量名1 = 变量值1, 变量名2 = 变量值2, 变量名3 = 变量值3, 变量名4 = 变量值4, .....
C语言定义常量使用关键字const
const 数据类型 常量名 = 常量值; // 注意:常量定义的同时必须赋值,否则编译器报错,默认的分号不能少;
C语言定义字符变量语法规则:
char 变量名 ;
变量名 = '变量值' ‘; // 必须单引号''把字符引起来
#include <stdio.h> // 头文件
/*
C语言中各种变量的定义及数据类型的认知:
一般而言,在譬如C等高级编程语言中,我们定义不同的类型的变量,需要不同的数据类型来进行声明,不同类型的数据类型声明的变量占用的内存空间不一样;
而数据类型大致分为两种:
(1)内置的基本数据类型:数字类型,字符型,布尔型
(2)自定义的数据: 如结构体类型,共用体类型,指针类型,枚举类型,数据类型等
*/
void main() { // 程序执行入口,main函数可以有参数;
printf("C语言定义变量语法规则");
/*
变量定义语法规则:
(1)先声明,再赋值
数据类型 变量名称; // 声明变量
变量 = 变量的值; // 给变量赋值
C语言的语句以分号“;”语句的结束标识
(2)变量声明同时进行赋值
数据类型 变量名称 = 变量的值
(3)同时定义多个变量并赋值
数据类型 变量名1 = 变量值1, 变量名2 = 变量值2, 变量名3 = 变量值3, 变量名4 = 变量值4, .....
*/
// 定义数字类型的变量
short sh = 200; // 定义短整形的数据类型变量
long lo = 5565464; // 定义长整形的数据类型变量
int in = 300000; // 定义短整形数据
printf("输出不同的数量类型: \n");
printf("短整形是: %hd\n", sh);
printf("整形是: %d\n", in);
printf("输出长整形:%ld\n",lo);
printf("===============================================\n");
printf(" 学无止境,C位出道\n");
printf("===============================================\n");
printf("C语言定义常量:\n");
/*
C语言定义常量使用关键字const
const 数据类型 常量名 = 常量值; // 注意:常量定义的同时必须赋值,否则编译器报错,默认的分号不能少;
*/
const float NUM = 3.1415926;
printf("常量Num = %f", NUM);
printf("\n");
printf("");
printf("");
printf("字符定义规则:");
/*
C语言定义字符变量语法规则:
char 变量名
变量名 = '变量值' // 必须单引号''把字符引起来
*/
char t = 'A';
printf("字符t = %c", t);
printf("");
}
运行效果:
C语言定义变量语法规则输出不同的数量类型:
短整形是: 200
整形是: 300000
输出长整形:5565464
===============================================
学无止境,C位出道
===============================================
C语言定义常量:
常量Num = 3.141593
字符定义规则:字符t = A
D:\program_file\c_workspace\ProjectCodeChapter\x64\Debug\ProjectCodeChapter.exe (进程 17968)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
二:宏定义|宏认知
通常定义字符串常量使用#define,它被称为"宏定义"。根据宏定义中是否有参数,
可以将宏定义分为:
(1)不带参数的宏定义
(2)带参数的宏定义
========================================================================
(1.1)不带参数的宏定义,如下形式:
#define 宏名 字符序列
#: 表示这是一条预处理命令
宏名: 是一个标识符,必须符合C语言标识符的规定
字符序列: 可以是常量,表达式,格式字符串等 例如: #define PI 3.14159 ,该语句的作用是用PI替代
3.14159,在编译处理时,每当在源程序中遇到PI就自动用3.14159代替
(1.2)宏定义不是C语句,不需要在行末加分号,宏定义后,即可成为其他宏定义中的一部分。
(1.3)不带参数的宏,在字符串中含有宏名,则不能被替换
(1.4)#define 命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到此源文件结束
(1.5)可以用#undef命令终止宏定义的作用域
#include <stdio.h>
/*
通常定义字符串常量使用#define,它被称为"宏定义"。根据宏定义中是否有参数,
可以将宏定义分为:
(1)不带参数的宏定义
(2)带参数的宏定义
========================================================================
(1.1)不带参数的宏定义,如下形式:
#define 宏名 字符序列
#: 表示这是一条预处理命令
宏名: 是一个标识符,必须符合C语言标识符的规定
字符序列: 可以是常量,表达式,格式字符串等 例如: #define PI 3.14159 ,该语句的作用是用PI替代
3.14159,在编译处理时,每当在源程序中遇到PI就自动用3.14159代替
(1.2)宏定义不是C语句,不需要在行末加分号,宏定义后,即可成为其他宏定义中的一部分。
(1.3)不带参数的宏,在字符串中含有宏名,则不能被替换
(1.4)#define 命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到此源文件结束
(1.5)可以用#undef命令终止宏定义的作用域
(3)宏定义用于预处理命令,它不同于定义的变量,只作字符替换,不分配内存空间
(3.1)带参数的宏定义。带参数的宏定义不只是简单的字符串替换,还要进行参数的替换。其一般形式如下:
#define 宏名(参数列表) 字符序列
*/
#define SIDE 5 // 定义宏 正方形的边
#define PERIMETER 4*SIDE // 定义正方形的周长宏
#define AREA SIDE*SIDE // 定义面积宏
#define STANDARD "Come on baby,jion us.\n" // 定义字符串宏
#define TEST "Come on baby,jion us."
#define MIN(x,y)(x<y?x:y) // 带参数的宏定义
void main() {
printf("输出宏字符串: \n");
printf(STANDARD);
printf("正方形的边长: %d \n", SIDE);
printf("正方形的周长: %d \n", PERIMETER);
printf("正方形的面积: %d \n", AREA);
printf("字符串中含有宏名时,该宏将不会被替换\n");
char exp[30] = "This TEST is not that TEST";
printf("%s\n", exp);
printf("==================================\n");
printf("使用#undef终止宏的作用域\n");
printf("%s\n", TEST);
#undef TEST
printf("=======================================\n");
int x = 15, y = 9; // 定义变量
printf("x,y为:\n");
printf("%d,%d \n",x,y); // 显示输出
printf("the min number is:%d\n", MIN(x, y)); // 输出最小的一个数据
}
运行效果:
输出宏字符串:
Come on baby,jion us.
正方形的边长: 5
正方形的周长: 20
正方形的面积: 25
字符串中含有宏名时,该宏将不会被替换
This TEST is not that TEST
==================================
使用#undef终止宏的作用域
Come on baby,jion us.
=======================================
x,y为:
15,9
the min number is:9D:\program_file\c_workspace\ProjectCodeChapter01\x64\Debug\ProjectCodeChapter01.exe (进程 16996)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
三:类型转换|格式化输出
(1)类型转换
1.1隐式类型转换 ---自动类型转换
在C语言中,如果把比较短的数据类型变量的值赋值给比较长的数据类型变量,那么比较短的数据类型变量中的值会升级为
比较长的数据类型,数据信息不会丢失。这类转换称为自动类型转换;
这种转换类似于,小杯子的水往大杯导入不会发生水溢出;
1.2显示类型转换 ---强制类型转换
强制类型转换是将比较长的数据类型变量的值赋值给比较短的数据类型变量,转换的过程如:大杯水往小杯导入,必会有水溢出,
也就是数据会丢失
强制类型转换一般形式:
(类型名) (表达式)
int secret1=103;
char answer1=(char)secret1; // 进行强制类型转换
(2)格式化字符输出|输入函数
2.1 使用printf(格式控制,输出列表)
#include <stdio.h> // 引入头文件
/*
(1)类型转换
1.1隐式类型转换 ---自动类型转换
在C语言中,如果把比较短的数据类型变量的值赋值给比较长的数据类型变量,那么比较短的数据类型变量中的值会升级为
比较长的数据类型,数据信息不会丢失。这类转换称为自动类型转换;
这种转换类似于,小杯子的水往大杯导入不会发生水溢出;
1.2显示类型转换 ---强制类型转换
强制类型转换是将比较长的数据类型变量的值赋值给比较短的数据类型变量,转换的过程如:大杯水往小杯导入,必会有水溢出,
也就是数据会丢失
强制类型转换一般形式:
(类型名) (表达式)
int secret1=103;
char answer1=(char)secret1; // 进行强制类型转换
(2)格式化字符输出|输入函数
2.1 使用printf(格式控制,输出列表)
*/
void main() { // 主函数
double foot = 37.5f; // 定义双精度变量,用来标识脚的大小
int size = (int)foot + 1; // 强制类型转换,表示鞋码的大小
printf("您的脚是%.1f码的尺寸\n", foot);// 输出脚的大小
printf("您应该买%d码的鞋子\n", size); // 输出鞋码的大小
}
运行效果:
您的脚是37.5码的尺寸
您应该买38码的鞋子D:\program_file\c_workspace\ProjectCodeChapter02\x64\Debug\ProjectCodeChapter02.exe (进程 8424)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .