20160125.CCPP详解体系(0004天)
程序片段(01):宽字符.c
内容概要:宽字符
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
//01.宽窄字符的使用特点:
// 1.宽窄字符变量的使用特点:
// (1).只是存储数据的格子大小不一样,窄字符小,宽字符大
// (2).如果存储相同的数据,只要不发生数据越界,或者存储的数据即使越界
// 但是打印的时候成中文字符字符存储单元进行打印,打印效果一致,否则乱码
// 2.宽窄字符所占用的内存字节数计算方式:
// 窄字符:
// 英文字符占用一个字节,中文字符占用两个字节
// 宽字符:
// 所有字符(无论是宽字符还是窄字符)统一占用两个字节
// 3.关于宽窄字符的乱码解决方案:
// MessageBox();
// (1).跟项目设置有关
// (2).字符集设置结果:
// 默认,使用Unicode字符集,要求中文字符必须使用宽字符
// 设置,使用多字节字符集,要求中文不必要使用宽字符,窄字符就行了
// MessageBox();+TEXT():有参宏
// (1).跟项目编译器设置毫无关系
// (2).使用中文的时候,需要用有参宏TEXT();进行处理
// 其实TEXT():有参宏就是在处理宽窄字符问题
// 中文自适应的进行改变(宽窄字符自动选择)
// 先判断项目编译器设置,再改变中文的形式特点(宽窄字符)
// MessageBoxA();
// (1).强制使用多字节字符集
// (2).也就是中文必须使用窄字符
// MessageBoxW();
// (1).强制使用Unicode字符集
// (2).也就是中文必须使用宽字符
int main01(void)
{
char ch = 'A';//表示范围小,节约内存
wchar_t ch1 = L'0';//宽字符占用两个字节,表示范围大,耗费内存
printf("%d, %d \n", sizeof(char), sizeof(wchar_t));
printf("%d, %d \n", sizeof(ch), sizeof(ch1));
printf("%d \n",sizeof("1我"));//4byte 三个字符
printf("%d \n",sizeof(L"1我"));//6byte "1"字符,"我"字符,"\0"字符-->3个字符
//MessageBox(0, L"你好天朝!", L"你好世界!", 0);
//设置Unicode,需要使用宽字符MessageBox(0, L"你好天朝!", L"你好世界!", 0);
//设置多字节字符,需要使用在字符MessageBox(0, "你好天朝!", "你好世界!", 0);
//中文字符串具体使用宽字符还是窄字符和项目设置有关:
// 默认Unicode,需要对中文使用宽字符
// 设置多字节字符集,不需要使用宽字符
//A代表调用多字节字符集,需要使用窄字符来操作中文
MessageBoxA(0, "你好天朝!", "你好世界!", 0);
//W代表调用默认调用Unicode,需要使用宽字符来操作中文
MessageBoxW(0, L"你好中文!", L"你好世界!", 0);
//TEXT可以进行兼容自动调整,也就是忽略宽窄字符,自适应显示
MessageBox(0, TEXT("你好天朝!"), TEXT("你好世界!"), 0);
system("pause");
return 1;
}
程序片段(02):宽字符处理.c
内容概要:宽字符处理
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>//包含本地化设置函数的头文件
//01.宽窄字符特点:
// 1.无论是宽字符还是窄字符,赋予同一个数据,那么映射的实体都一样,只是存储盒子不一样
// 2.既然数据实体一致,那么解析的时候就看解析方式的特点了
// %s:表示按照字符串的方式进行解析,知道解析到字符串标识符
// %c%c:表示按照两个字节对应于两个字符进行解析,解析结果如同字符串
int main01(void)
{
char str[10] = "我";//无论是宽窄字符所映射的数据实体都一致
printf("%s \n", str);//按照字符串进行解析
printf("%c%c \n", str[0], str[1]);//窄字符显示汉字(多个字符组合进行解析)
system("pause");
return 1;
}
//02.宽字符的使用特点:
// 1.需要设置国际化当中的本地化:
// 引入头文件:#include <locale.h>
// 设置本地化:setlocale(LC_ALL, "zh-CN");
// 2.宽字符函数处理宽字符的时候,所以宽字符
// 都给必须添加L标识
// 3.宽字符对应的格式控制符:
// L"%ls"
int main02(void)
{
setlocale(LC_ALL, "zh-CN");//全局使用中文环境(国际化设置)
//wchar_t wstr[10] = L"1234";
wchar_t wstr[10] = L"1234我是色狼!";//宽字符用wprintf,显示英文
wprintf(L"%ls \n", wstr);//L,l宽字符处理
system("pause");
return 1;
}
//03.宽窄字符常量都必须采用单引号('')引上
int main(void)
{
setlocale(LC_ALL, "zh-CN");
wchar_t ch = L'我';
putwchar(ch);
system("pause");
return 1;
}
int main04(void)
{
char ch = 'A';
wchar_t wch = L'A';
printf("%d \n", wch);
system("pause");
return 1;
}
int main05(void)
{
setlocale(LC_ALL, "zh-CN");
//printf("%s", L"我打算的");//宽字符不能使用窄字符的打印方式
wprintf(L"%ls", L"我是");
system("pause");
return 1;
}
程序片段(03):auto.c
内容概要:auto关键字
#include <stdio.h>
//01.auto关键字使用特点:
// 1.标识变量的自动回收释放
// 2.只要在函数内部的变量:
// 使用auto关键字修饰变量的声明与没有声明的效果一致
void go(void)
{
int num = 10;
printf("%p \n", &num);
}
int main01(void)
{
auto int num = 10;//自动分配自动释放
go();
printf("AAAAAAAAAAAAAAAA \n");
go();
printf("AAAAAAAAAAAAAAAA \n");
system("pause");
return 1;
}
程序片段(04):main.cpp
内容概要:auto关键字Qt测试
#include "mainwindow.h"
#include <QApplication>
void go()
{
MainWindow w;//创建
w.show();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
go();
return a.exec();
}
程序片段(05):bool.c
内容概要:C99语法补充_Bool
#include <stdio.h>
#include <stdlib.h>
//01.在C99语法当中引入了基于C语言的布尔类型:
// 1._Bool类型
// 2.占用单个字节
// 3.true(非0)|false(0)-->单个字节存储
int main01(void)
{
_Bool bl = 10;//true|false 非0|0
printf("%d \n", bl);
printf("%d \n", sizeof(bl));//一个字节
bl ? printf("周瑞富爱凤姐! \n") : printf("周瑞富不爱凤姐! \n");
system("pause");
return 1;
}
程序片段(06):int.c
内容概要:整数的操作意义
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//01.循环复杂指令:
// for /l %i in (1,1,5) do
int main01(void)
{
char cmd[100];
int N;
scanf("%[^\n]", cmd);//处理携带空格的字符串
scanf("%d", &N);
char strcmd[200] = { 0 };
sprintf(strcmd, "for /l %%i in (1,1,%d) do %s", N, cmd);//映射
//printf("%s", strcmd);
system(strcmd);
system("pause");
return 1;
}
程序片段(07):Test.c
内容概要:啃爹运算法则解析
#include <stdio.h>
#include <stdlib.h>
//01.总结:
// 1.从结果可以退出计算原理,保证交换律依然有效
// 也就是同时出现++db或者同时出现db++那么
// 无论如何都得保证其运算结果一致
// 2.单实体的数据如何确定?
// 前加就以最有一次加加运算的结果为实体数据
// 后加就以第一次加加运算的结果为实体数据
// 所有实体的的数据一致
int main01(void)
{
printf("Hello World!!! \n");
double db = 1;
//double y = ++db*++db;//9
//double y = db++*db++;//1
double y = db++ + db++ + db++;//3
//printf("%p \n", &db);
printf("%f \n", y);
system("pause");
return 1;
}
程序片段(08):随机数.c
内容概要:赌博机实现
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//01.赌博问题模拟:
// 1.随机生成0~100之间的数字
// 2.生成的数字在>=80之间的数字
// 概率为20%
//02.随机数生成要素:
// 1.随机数种子
// 2.种植数种子
// 3.随机数函数
// 4.求余运算符
int main01(void)
{
time_t ts;
unsigned int num = time(&ts);//根据时间生成随机数种子
srand(num);
int data = rand() % 100;//随机数的生成依赖于随机数种子
printf("%d \n", data);
system("pause");
return 1;
}
int main02(void)
{
time_t ts;
unsigned int num = (unsigned int)time(&ts);
srand(num);
int data = rand() % 100;
printf("%d \n", data);
data >= 90 ? printf("赢了 \n") : printf("输了 \n");
system("pause");
return 1;
}
程序片段(09):打印可见字符.c
内容概要:打印可见字符
#include <stdio.h>
#include <stdlib.h>
//01.字符的可见性:
// 1.可见字符:
// ASCII码值在32~126之间的字符就是课件字符
// 2.不可见字符:
// ASCII码值在32~126之外的字符就是不可见字符
int main01(void)
{
for (int i = 32; i < 127; i++)
{
putchar(i);
}
system("pause");
return 1;
}
程序片段(10):main.c
内容概要:简单排序
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
//将a,b,c三个变量的数值按照从小打到进行排列
(a > b) ? (a=a^b,b=a^b,a=a^b) : 0;
(a > c) ? (a=a^c,c=a^c,a=a^c) : 0;
(b > c) ? (b=b^c,c=b^c,b=b^c) : 0;
//a=a^b,b=a^b,a=a^b;可以实现变量存储的数据交换操作
printf("%d, %d, %d \n", a, b, c);//从小达到
system("pause");
return 1;
}
20160125.CCPP详解体系(0004天)的更多相关文章
- 20160124.CCPP详解体系(0003天)
程序片段(01):HelloCGI.c 内容概要:CGI_HelloWorld #include <stdio.h> //01.CGI程序的编写规范 // (1).HTML文本格式声明后面 ...
- 20160123.CCPP详解体系(0002天)
程序片段(01):字符.c 内容概要: 转义字符 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdi ...
- 20160122.CCPP详解体系(0001天)
程序片段(01):Hello.c 内容概要:HelloWorld //01.#include表示包含的作用: // (1).<>:表示只在系统目录之下进行查找 // (2)."& ...
- python学习之并发编程
目录 一.并发编程之多进程 1.multiprocessing模块介绍 2.Process类的介绍 3.Process类的使用 3.1 创建开启子进程的两种方式 3.2 获取进程pid 3.3验证进程 ...
- 20160129.CCPP体系详解(0008天)
程序片段(01):函数.c+call.c+测试.cpp 内容概要:函数 ///函数.c #include <stdio.h> #include <stdlib.h> //01. ...
- 20160206.CCPP体系详解(0016天)
代码片段(01):.指针.c+02.间接赋值.c 内容概要:内存 ///01.指针 #include <stdio.h> #include <stdlib.h> //01.取地 ...
- 20160205.CCPP体系详解(0015天)
程序片段(01):01.杨辉三角.c 内容概要:杨辉三角 #include <stdio.h> #include <stdlib.h> #define N 10 //01.杨辉 ...
- 20160204.CCPP体系详解(0014天)
程序片段(01):define.h+data.h&data.c+control.h&control.c+view.h&view.c+AI.h&AI.c+main.c 内 ...
- 20160203.CCPP体系详解(0013天)
程序片段(01):数组.c+02.数组初始化语法.c 内容概要:数组 ///01.数组.c #include <stdio.h> #include <stdlib.h> //0 ...
随机推荐
- Baidu和Google搜索引擎使用技巧(转)
转自:Baidu和Google搜索 http://www.douban.com/note/261208979/ 百度搜索一:基本搜索 二:高级搜索 谷歌搜索一:基本搜索1)可部分匹配也可完全匹 ...
- UVA 557 Burger 排列组合递推
When Mr. and Mrs. Clinton's twin sons Ben and Bill had their tenth birthday, the party was held at t ...
- poj 1724(有限制的最短路)
题目链接:http://poj.org/problem?id=1724 思路: 有限制的最短路,或者说是二维状态吧,在求最短路的时候记录一下花费即可.一开始用SPFA写的,900MS险过啊,然后改成D ...
- shell基础(一)
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释 ...
- http和socket通信的区别
应用层:HTTP协议(基于传输层的TCP协议,主要解决如何包装数据) 传输层: TCP协议(基于网络层的IP协议).TPC/IP协议(主要解决数据如何在网络中传输) 网络层: IP 协议 socket ...
- 学了C语言,如何写个程序计算出每个月的第一个星期一对应的日期
在前面,我们分别利用泰勒公式和C标准库中的mktime()函数推算了某个特定日期所对应的星期几,刚做完这些,就又遇到了一个与日期相关的新任务: 老板把每个月例会的时间定在了每个月的第一个星期一,他让我 ...
- java开发--配置ssh
下面,我查阅了大量资料,走了不少错路,最后总结了经验后搭建出来的SSH框架. 希望第一次搭建SSH框架的会从中得到启发. 开发环境: eclipse-jee-kepler-SR1-win32 4.3. ...
- 近期学习js总结
都是一个细节问题老是犯错,还有就是之前的知识点没有去复习,老是犯错误.总结一下避免以后又犯错. 1.没有去检查对象是否存在 写完js就是忘记去检查是否存在,等到用到项目中才发现,代码如下:if(!ob ...
- 自己写的中间层..基于通讯组件 RTC
273265088 我用原生Listbox与你的组件组合...创造了奇迹..搞了一个非常复杂的 UI .. 每个item高度 包括里面的元素 以及事件都是动态的搞了好几个小时感觉UI 非常完美比客户要 ...
- Android 闹钟设置
在Android中可以通过AlarmManager 来实现闹钟,AlarmManager类是专门用来设定在某个指定的时间去完成指定的事件.AlarmManager 提供了访问系统警报的服务,只要在程序 ...