- 浏览: 39286 次
- 性别:
- 来自: 上海
-
最新评论
文章列表
GUN C 和 ANSI C的几个区别
- 博客分类:
- C,C++
http://hi.baidu.com/deep_pro/blog/item/c59470afea08f0ca7dd92a1b.html
aaaaaaaaaaaaaaa
一浮点数的知识
1.首先浮点数不用补码表示,只有int型才用补码表示。
2.计算机能精确表示的数值是有限的,离散的,而现实中的实数是连续的,这就必然有精度的要求。二进制的小数更糟糕,能精确表示的更少。
例如:
0.1D,表示成二进制的时候是循环的
0.0 0011 0011 0011......B
根据IEEE标准754:
32位的float类型有效位为23位。前面还有个隐含位。
所以float类型最多的有效位:24位(这个位是bit,是对2进制来说的)。
0.1d
在内存中的表示为:
0 01111011 10011001100110011001101B
第一位为符号位,
接下来8位为 ...
有纯倒转,也有按单词为单位的。想做个总结
#include<stdio.h>
void ReverseChar( char * const start, char * const end)
{
if( start == NULL || end== NULL || start == end )
return ;
char * _start = start;
char * _end = end;
while( _start < _end )
{
// *_start ^= ...
看《C专家编程》总结的的。
首先是个经典的例子:
一个文件定义:
char a[4];
另一个文件声明:
extern char* a;
或者
extern char a[];
这两种声明会有什么后果?编译器是怎样的处理?
下面说明。
一.声明和定义的概念
一个变量和函数,定义只能有一次,但是声明却可以多次。
定义:确定对象的类型并分配了内存。
声明:描述了对象的类型,用于指代其他地方定义的对象。
二.数组和指针编译器的处理方式
1.首先明白左值和右值
X = Y;
在这个情况下:
符号X的含义是X所代表的地址,这被称为左值。在编译时可以。
符号Y的含义是Y所代表的地址的内容。这被称为右值。右 ...
那种加加减减的方法其实不对。因为缩小了数据范围。
a1=a1+a2; //此时a1为a1与a2之和
a2=a1-a2; //此时a2=a1
a1=a1-a2; //此时a1=a2
位操作符号^(异或)有个性质:
a^a=0;
0^a=a;
所以a^a^b=b;
所以正确的交换如下:
void swap (int& _1,int& _2)
{
_1^=_2^=_1^=_2
return
}
^=结合的方向是从右向左。
Linux下一些操作
- 博客分类:
- linux
1.解压多个文件
解压当前目录下的所有 .tar.gz 结尾的文件:for ARK in ./*.tar.gz; do tar xvf $ARK; done
将文件名赋给ARK。
或者
find ./ -name '*.tar.gz ' -exec tar xvf {} \; -print
2.软件的安装和删除
安装:
sudo apt-get install xxx
或者:
sudo aptitude search XX
sudo aptitude install XXX
删除:
apt-get autoremove XXXX
3.shell下 ...
template是关键字,template之后是 模板形参表。模板形参表是用尖括号括住的一个或者多个模板形参的列表。
1.模板函数
template <typename T> //没有分号
[inline] int compare(const T &V1 ,const T & ...
Quick Sort(快速排序)
- 博客分类:
- C,C++
Quick Sort算法描述如下:
假设S代表将被处理的序列
1.如果S的元素个数为0或1,结束。
2.取S中的任何一个元素,当作枢轴(pivot)v.
3.将S分割成L,R两段,使L内的每个元素都小于或等于v,R内的每一个元素都大于或等于v.
4.对L,R递归执行Quick Sort.
http://bbs.chinaunix.net/thread-809891-1-1.html
===========
STL中的sort(),只适用于RandomAccessIterator.
http://blog.csdn.net/kittyjie/article/details/4731222
static union
{
char c[4];
unsigned char l;
} endian_test={ {'l','?','?','b'} }
#define ENDIANNESS ( (char)endian_test.l )
if (ENDIANNESS == 'l')
//little endian
else
//big endian
http://www.cnblogs.com/leezhm/archive/2011/07/19/2110864.html
#include<iostream>
#include<fstream>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
ifstream in_file;
ofstream out_file ;
string out_string;
out_file.open("/home/merlin/code/word.txt");
if(out_file.is_open())
{
cout<<& ...
先是在网上看到这个
http://www.ibm.com/developerworks/cn/linux/l-tsl/
深受启发。
truss是 Solaris and FreeBSD下的调试工具,可以监视系统调用。而Linux下是用strace,一般是默认安装。如果没有可以用sudo apt-get install strace 来安装(ubuntu下)。
终端中输入:
strace -f -T -o vim.strace vim
解释:
-f :除了跟踪当前进程外,还跟踪其子进程。
-o file :将输出信息写到文件file中
T :每条系统调 ...
《C++Primer》里说了:
string类型支持长度可变的字符串。C++标准库将负责管理与相关的内存,以及提供各种有用的操作。
由此可见,string类型的大小应该是动态可变的,不够的时候可能会扩增,扩增和max_size(),string::size_type的关系我也不是很清楚。
string里有max_size()方法可以查看string对象可以保持的最大字符数。
size()方法和length()方法等效,返回string对象所保持的字符数。
// comparing size, length, capacity and max_size
#include <iost ...
char类型占一个字节。所占位数为8位。取之范围为-128~127(补码形式存储)。
10000000~11111111[补码]
关于补码
http://apps.hi.baidu.com/share/detail/44713839
总结就是:
当需要补码的时候,一般是负数(减法转加法)
补码:正数不变,负数是用模(模一般是最大数+1)减去负数的绝对值。
8位2进制的模:1 0000 0000
所以[-128]补 = 1 0000 0000 - 1000 0000 = 1000 0000 ;
[-1]补 = 1 0000 0000 - 0000 0001 = 1111 ...
C++
可以看这个
http://www.cplusplus.com/doc/tutorial/files/
我整理下:
ofstream //写文件的流类
ifstream //读文件的流类
fstream //读/写文件的流类
这三个类都直接或者间接的继承于istream和ostream.我们平时用的cin是istream类的实例,cout是ostream类的实例,只不过他们是关联显示设备,而不是文件。
使用他们的时候,包含的头文件:
#include<iostream.h> //这样写,里面的函数都是全局函数
#include<fstream.h ...