不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
作者:webabcd
介绍
不可或缺 Windows Native 之 C 语言
- 常量
- 变量
- 基本数据类型
示例
cDataType.h
#ifndef _MYHEAD_DATATYPE_
#define _MYHEAD_DATATYPE_ #ifdef __cplusplus
extern "C"
#endif char *demo_cDataType(); char *demo_constant(); char *demo_integer(); char *demo_float(); char *demo_char(); #endif
cDataType.c
/*
* 常量,变量,基本数据类型的相关知识点
*
*
* 定义变量的时候就会分配内存,比如:
* int i; // 定义时就分配了内存
* i = 100; // 为那块内存赋值
*
* 注:
* 1、声明一个变量意味着向编译器描述变量的类型,并分配存储空间
* 2、声明了一个变量后,如果需要使用的话则需要对其赋值,未赋值的变量不能使用
*/ #include "pch.h"
#include "cDataType.h"
#include "cHelper.h" #define CONSTANT1 100
#define CONSTANT2 3.14 // 常量中定义浮点型就是 double 类型的
#define CONSTANT3 "常量" char *demo_cDataType()
{
char *str1 = demo_constant();
char *str2 = demo_integer();
char *str3 = demo_float();
char *str4 = demo_char(); // 关于基本数据类型之间的转换
float a = 3.14;
int b = a; // 自动转换
int c = (int)a; // 强制转换
int d = int(a); // 强制转换(c++) return str_concat4(str1, str2, str3, str4);
} // 常量的知识点
char *demo_constant()
{
char *str1 = int_toString(CONSTANT1);
char *str2 = float_toString(CONSTANT2);
char *str3 = CONSTANT3; // 这是 const 常量
const int i = ; // const 常量和 #define 常量的区别,如下:
/*
如果是 #define x 1 + 2
那么表达式 3 * x * 4 就相当于 3 * 1 + 2 * 4,结果是 11
如果是 const int x = 1 + 2
那么表达式 3 * x * 4 就相当于 3 * 3 * 4,结果是 36 由上可知每次引用 #define 时都会做一次内存分配;而 const 仅在定义的时候分配一次内存 严格来说 const 就是一个不可变的变量,在 ANSI C 标准中,如下写法就是错误的(注:ANSI C99 是允许用变量定义局部数组大小的)
const int n = 10;
int ary[n];
因为 ANSI C 标准规定了定义数组的长度时必须用常量,而 const 的本质是一个变量(虽然不可变)
*/ return str_concat3(str1, str2, str3);
} // 整型的知识点
char *demo_integer()
{
// 对于 32 位系统来说,其占用 4 字节(其区间为:-2147483648~2147483647)
int i = ; // 对于 32 位系统来说,其通常占用 2 字节(标准要求只要不大于 int 即可)
short si = ; // 对于 32 位系统来说,其通常占用 8 字节(标准要求只要不小于 int 即可)
long li = 0L; // L 或 l 代表长整形 // 对于 32 位系统来说,其占用 4 字节
unsigned ui = 0U; // U 或 u 代表无符号整型(其区间为:0~4294967295) // 对于 32 位系统来说,其通常占用 8 字节(标准要求只要不小于 int 即可)
unsigned long ul = 0UL; // UL 或 ul 代表无符号长整形 // 以“0”开头就是八进制,其十进制的结果为 13
int x = ; // 以“0X”开头就是十六进制,其十进制的结果为 65535
int y = 0XFFFF; // 演示一下什么是数据的溢出?
// 假定 short 占用 2 个字节,其最大值为 32767,那么再加 1 呢,就变成 -32768 了,原理如下:
// 有符号 32767 的二进制为 0111111111111111,加 1 后变为 1000000000000000 ,就是 -32768 了
short abc = ;
abc++; // -32768 // 注意:对于有符号数据来说,左面第 1 表示符号,0 表示正,1 表示负
// 判断一个数字是否有符号
if (ui >= && ~ui >= ) // ~ 是取反操作
return "unsigned int 是无符号";
else
return "bug";
} // 浮点型的知识点
char *demo_float()
{
// 4 字节
float f = 3.14F; // F 或 f 代表浮点型 // 8 字节
double f2 = 3.14F; // 16 字节
long double f4 = 3.14F; // 指数形式,即科学表示法
float x = 0.00314E3; // 等于 0.00314 * 10的3次方
float y = 314E-; // 等于 314 * 10的-2次方(负数幂就是其正数幂的倒数,即 10 的 -2 次方的值为:1/100) // 通过科学表示法来理解浮点型数据在内存中的存放形式
// 在科学表示法中,S=M*2^N 主要由三部分构成:符号位+阶码(N)+尾数(M)
// 对于float型数据,其二进制有32位,其中符号位1位,阶码8位,尾数23位;对于double型数据,其二进制为64位,符号位1位,阶码11位,尾数52位。 return float_toString(y);
} // 字符型的知识点
char *demo_char()
{
// 用单引号标记字符类型
char c = 'x'; // 常用转义字符
// \r - 回车
// \n - 换行
// \t - 制表
// \b - 退格
// \\ - \
// \' - 单引号
// \" - 双引号 // \ 后面跟一个 ASCII 的八进制值,则结果为其对应的字符
char *str1 = "\101"; // A // \x 后面跟一个 ASCII 的十六进制值,则结果为其对应的字符
char *str2 = "\x41"; // A // 字符在内存中的保存形式:保存的就是其对应的 ASCII 码值
int ascii = (int)c; // 120, 即 \x78 // 用双引号标记字符串类型,字符串其实就是字符数组
// 字符串的结束标识为:'\0',即 ASCII 码中的 0,也就是 NULL
// 也就是说,字符串的占用空间为:字符串的字节数 + 1
char str[] = "abc"; // 其在内存中的存放形式为:abc\0,占用 4 个字节 return str_concat2(str1, str2);
}
OK
[源码下载]
不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型的更多相关文章
- 不可或缺 Windows Native (5) - C 语言: 数组
[源码下载] 不可或缺 Windows Native (5) - C 语言: 数组 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 数组 示例cArray.h #ifn ...
- 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域
[源码下载] 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 动态分配内存 链 ...
- 不可或缺 Windows Native (10) - C 语言: 文件
[源码下载] 不可或缺 Windows Native (10) - C 语言: 文件 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 文件 示例cFile.h #ifn ...
- 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等
[源码下载] 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等 作者:webabcd 介绍不可或缺 Windows Native ...
- 不可或缺 Windows Native (6) - C 语言: 函数
[源码下载] 不可或缺 Windows Native (6) - C 语言: 函数 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h # ...
- 不可或缺 Windows Native (7) - C 语言: 指针
[源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...
- 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符
[源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...
- 不可或缺 Windows Native (1) - C 语言: hello c
[源码下载] 不可或缺 Windows Native (1) - C 语言: hello c 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 在 Windows Sto ...
- 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出
[源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...
随机推荐
- 【WebMisCentral WMC】基于Extjs 4.2x的企业级用户授权认证中心系统(SSO+AM+SM),多租户SAAS应用
http://saas.chinacloudtech.com 题记 三年磨一剑,在企业信息化的道路上已经走了3年之久了,3年多时间里做了很多,突破了很多:有无奈和辛酸,也有收货与喜悦:自我价值也在不断 ...
- Linux连续执行多条命令
引自:这里 每条命令使用";"隔开,则无论前边的命令执行成功与否都会继续执行下一条命令这里,故意将第二条命令中的echo多写了一个o,命令执行出错,但并不影响后续命令的执行可以这么 ...
- [Javascript] The "this" keyword
The very first thing to understand when we're talking about this-keyword is really understand what's ...
- dede教程之后台登录是自动跳出解决方法
有时也不知道什么原因,登录后台时输入全部正确点确认按钮时却会自动跳出.必须输入http://你的域名/dede/login.php才可以登录.通过尝试最终解决了问题,下面分享出来: 1.打开根目录da ...
- [原]quick2.25精灵变灰
由于quick2.25没有导出shader相应的接口,所以2.25无法直接使用shader. 本文简单介绍如何导出相应接口,同时教大家使用shader 实现精灵变灰 一.编写静态函数,以供导出使用(直 ...
- 在spring,mybatis整合配置中走的弯路(1)
在接触一个新东西,总免不了走一些弯路,也正是在这些弯路中,我们不断的成长. 从git上把之前写的代码扒下来,看看我在当初使用spring与mybatis中所走的弯路,路过的君子也可引以为戒. < ...
- Sql Server:不允许 ASSIGNMENT 语句中包含 FOR XML 子句
编写函数的时候遇到“不允许 ASSIGNMENT 语句中包含 FOR XML 子句”错误,开始以为数据库函数里不可以写 FOR XML 子句,仔细看了看总觉得这么写别扭索性改了一种写法就通过了. BE ...
- Java8简明教程(转载)
ImportNew注:有兴趣第一时间学习Java 8的Java开发者,欢迎围观<征集参与Java 8原创系列文章作者>. 以下是<Java 8简明教程>的正文. “Java并没 ...
- 指定的参数已超出有效值的范围 参数名: utcDate WebResource异常
指定的参数已超出有效值的范围.参数名: utcDate 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息 ...
- [转]Visual Studio技巧之打造拥有自己标识的代码模板
可能经过很多博客的介绍,大家都知道代码段的使用,使用代码段可以很方便地生成一些常用的代码格式,确实对我们开发很方便.在团队开发中或者在某些情况下我们经常可能还会希望使用Visual Studio生成的 ...