- 博客(17)
- 收藏
- 关注
原创 CPP(十)特殊的解释方式:和C的不同
这段代码作为C代码一般会报编译错误:#includeint main(){ int a = 1; int b = 2; (1 ? a : b) = 5201314; printf("%d %d", a, b); return 0;}但是同样的
2014-06-28 23:42:17 540
原创 神奇的C语言二十:谈谈类型转换
先看一个例子。请猜测下面的代码的输出是什么?#include int main(){ char a = 255; char b = 1; printf("%d %d\n", (unsigned char)(a + b), (unsigned char)a + (unsigned char)b); return 0;}如果你的答案是255
2014-06-12 18:24:16 729
原创 CPP(八):bitset的实现与位操作
源码如下。只是实现了常规成员函数,没有写操作符重载的部分。#include using namespace std;template class bitset{private: unsigned char *data; int cnt_bytes; int cnt_bits; static unsigned char mask[8]; // 将位偏移转化为字节偏移 in
2014-06-11 23:38:23 1090
原创 C++ STL
// Test.cpp : 定义控制台应用程序的入口点。//#include #include #include using namespace std;// double-ended queue#include void dqf(void){ deque dq; for (int i = 0; i < 10; ++i){ dq.push_front(i + 4);
2014-06-09 22:58:10 429
转载 一、Dancing Links:完全覆盖算法
1 问题描述考虑一张棋盘,被分成6×6(6行6列)的36个正方形。设有形状一样的多米诺牌,每张牌恰好覆盖棋盘上相邻的两个方格。若把18张多米诺牌摆放在棋盘上,任何两张多米诺牌均不重叠,每张多米诺牌覆盖两个方格,并且棋盘上的所有的方格均被覆盖住,这样一种排列称为多米诺牌的完美覆盖。请问:6×6的棋盘有多少种不同的完美覆盖?2 功能要求1) 良好的用户界面。要求能够显示所有的完美覆
2014-06-08 21:34:17 1064
原创 神奇的C语言十九:C语言的内存分配
这里 malloc不检查参数有效性,直接从堆中分配参数指定字节数的内存和一个用于记录此次分配的结构体。如果参数为0,分配仍然会发生。此时分配的内存不能进行操作,写入操作可能会覆盖其他变量,甚至是内存分配信息,造成程序的不稳定。free首先检查参数是不是NULL,如果是,返回;否则,认为参数指向的内存还没有被回收。根据参数找到记录该内存信息的结构体信息,并修改之(
2014-06-03 23:46:14 622
原创 神奇的C语言十八:volatile的应用
volatile是一个不常用的关键字,但是我们最好了解这个关键字的来龙去脉,以防止自己出错。volatile用于修饰一个变量,以告诉编译器:每次存取此变量时,都要按其地址来操作,而不要进行优化。volatile正是为了防止对某个变量的存取优化;如果没有优化,volatile关键字是没有作用的。下面是三个编译器优化的例子,解释了为什么需要volatile关键字。例子1多线程程
2014-06-03 23:38:06 649
原创 神奇的C语言十七:typeof关键字
这是C语言的一个新特性,目前使用还不是很广泛。大部分应用都是在宏中。如果您看过前面提及的sizeof关键字,就容易理解typeof了。typeof关键字用于获取括号内的表达式的类型。这个类型是一个编译器的内部表示。表达式不会生成代码。这和sizeof很类似。例子:typeof(int) a; // int atypeof(a) b; // int btypeof(++b) c;
2014-06-03 23:35:55 1148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人