[源码下载]

不可或缺 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 语言: 常量,变量,基本数据类型的更多相关文章

  1. 不可或缺 Windows Native (5) - C 语言: 数组

    [源码下载] 不可或缺 Windows Native (5) - C 语言: 数组 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 数组 示例cArray.h #ifn ...

  2. 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域

    [源码下载] 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 动态分配内存 链 ...

  3. 不可或缺 Windows Native (10) - C 语言: 文件

    [源码下载] 不可或缺 Windows Native (10) - C 语言: 文件 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 文件 示例cFile.h #ifn ...

  4. 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等

    [源码下载] 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等 作者:webabcd 介绍不可或缺 Windows Native  ...

  5. 不可或缺 Windows Native (6) - C 语言: 函数

    [源码下载] 不可或缺 Windows Native (6) - C 语言: 函数 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h # ...

  6. 不可或缺 Windows Native (7) - C 语言: 指针

    [源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...

  7. 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符

    [源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...

  8. 不可或缺 Windows Native (1) - C 语言: hello c

    [源码下载] 不可或缺 Windows Native (1) - C 语言: hello c 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 在 Windows Sto ...

  9. 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出

    [源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...

随机推荐

  1. 使用Eclipse进行远程调试【转】

    今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言也说不明白,从以前我发表的一篇文章可以看得出来,http://blog.csdn.net/sunyujia/arc ...

  2. tldr 的安卓客户端

    上次在 Cheat (tldr, bropages) - Unix命令用法备忘单 这篇博文中提到过 tldr ,它跟 cheatsheet 的功能一样:用来查询一些常用命令的惯用法,呈现形式是简明扼要 ...

  3. 几组User-Agent

    Your User Agent String is: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.19 (KHTML, like Gecko) Ubun ...

  4. C# vs MySql

    MySqlHelper类 /// <summary> ///MySql操作类 /// </summary> public abstract class MySqlHelper ...

  5. c2ph

    http://bolenot.ru/library/cmd/blcmdl1_c2ph.htm?-c2ph---Linux%E5%91%BD%E4%BB%A4--UNIX%E5%91%BD%E4%BB% ...

  6. ASP.NET MVC 获取当前访问域名

    var request = filterContext.HttpContext.Request; string url = request.Url.Authority; string function ...

  7. EPLAN P8导线颜色的设置

    P8里的导线应称为"连接",连接的颜色代表了其电位的传递路径,如可以给三相电源设置成黑色,PE设为绿色,N设为蓝色等等.  P8中电位在连接和元器件中传递的方法是由元器件的连接点属 ...

  8. Cloning EBS from Linux 5 to Linux 6 Fails: "Error While Loading Shared Libraries: libclntsh.so.10.1

    SYMPTOMS    During clone Oracle Applications R12 from Linux 5 to Linux 6 the following error occurs ...

  9. How to debug Typescript in browser

    How to debug typescript, In Chrome, we need to press F12, open settings, uncheck the Enable JavaScri ...

  10. Docker练习例子:基于 VNCServer + noVNC 构建 Docker 桌面系统

    0. 安装docker 这一步略,网上有好多教程,一般出现装不上的原因,也就是网速问题了,这个我也很难帮你. 1. 下载指定的镜像images docker pull dorowu/ubuntu-de ...