Skip to content

紫禁城

子衿的居宫

Archive

Category: C++

C以及C++中都不支持float、double、longdouble、void等类型的位操作。
以float位操作求绝对值为例,代码如下:

1
2
3
4
5
6
float float_abs(float f)
{
    int* p = (int*)&f;
    *p = *p & (~0UL >> 1);
    return *((float*)p);
}

嘿嘿,明白了吧?其他类型也一样,将它们的地址保存在一个整型指针处,然后对该指针进行操作即可。

本文转载自http://genuine.bloghome.cn

(一)使用printf输出各种格式的字符串

1. 原样输出字符串:
    printf(“%s”, str);

2. 输出指定长度的字符串, 超长时不截断, 不足时右对齐:
    printf(“%Ns”, str);             –N 为指定长度的10进制数值

3. 输出指定长度的字符串, 超长时不截断, 不足时左对齐:
    printf(“%-Ns”, str);            –N 为指定长度的10进制数值

4. 输出指定长度的字符串, 超长时截断, 不足时右对齐:
    printf(“%N.Ms”, str);           –N 为最终的字符串输出长度
                                    –M 为从参数字符串中取出的子串长度

5. 输出指定长度的字符串, 超长时截断, 不足时左对齐是:
    printf(“%-N.Ms”, str);          –N 为最终的字符串输出长度
                                    –M 为从参数字符串中取出的子串长度

 ★d格式符,用来输出十进制整数.

                ⑴%d,按整型数据的实际长度输出.

                ⑵%md,m为指定的输出字段的宽度,数据位数小于m,左边补空格,若大于m,按实际长度输出

                ⑶%ld,输出长整型数据(long)

       ★o格式符,以八进制输出整数(不带符号,他将符号位也作为八进制数的一部分了)
                ⑴%o,参考%d的解释.

                ⑵%lo,参考%ld的解释.

                ⑶%mo,参考%md的解释.

        ★x,X格式符,以十六进制输出整数
                也是3种参考%d的解释.
        ★u格式符,用来将unsigned型数据,既无符号数,以十进制形式输出
        ★c格式符,输出一个字符.
        ★s格式符,输出一个字符串.
                ⑴%s,如printf(“%s”,”CHINA”)

                ⑵%ms,输出的字符串占m列,字符串长度小于m,左边补空格,如果超出则全部输出.

                ⑶%-ms,串小于m,则在m列范围内字符串左靠,右补空格.

                ⑷%m.ns,输出占m列,但只取字符串左端n个字符.这n个字符输出在m列的右边,然后左边补空格.

                ⑸%-m.ns,和上面的放下,就是n个字符输出在m列的左侧,右边补空格.n>m,那么m自动取n的值,既保证n个字符正常输出.

                printf(“%3s,%7.2s,%.4s,%-5.3s
“,”CHINA”,”CHINA”,”CHINA”,”CHINA”);

        ★f格式符,用来输出实数,以小数形式输出.

                ⑴%f,全部输出,而且输出6位小数.

                ⑵%m.nf,输出数据共占m列,n位小数,如果数据长度小于m那么左边补空格

                ⑶%-m.nf,和上面的m.nf相反,为左靠齐,右补空格.

        ★e,E格式符,以指数形式输出实数

                ⑴%e,不指定输出数据所占的宽度和数字部分的小数位数.

                ⑵%m.ne和%-m.ne,这里n指小数部分的位数

        ★g,G格式符,用来输出实数,它根据数值大小,自动选择f格式还是e格式,(选占宽最少的一种),且不输出无意义的0.这种格式用的不多.

  

C、传统 C++

 

#include <assert.h>    //设定插入点

#include <ctype.h>     //字符处理

#include <errno.h>     //定义错误码

#include <float.h>     //浮点数处理

#include <fstream.h>    //文件输入/输出

#include <iomanip.h>    //参数化输入/输出

#include <iostream.h>   //数据流输入/输出

#include <limits.h>    //定义各种数据类型最值常量

#include <locale.h>    //定义本地化函数

#include <math.h>     //定义数学函数

#include <stdio.h>     //定义输入/输出函数

#include <stdlib.h>    //定义杂项函数及内存分配函数

#include <string.h>    //字符串处理

#include <strstrea.h>   //基于数组的输入/输出

#include <time.h>     //定义关于时间的函数

#include <wchar.h>     //宽字符处理及输入/输出

#include <wctype.h>    //宽字符分类

//////////////////////////////////////////////////////////////////////////

标准 C++ (同上的不再注释)

 

#include <algorithm>    //STL 通用算法

#include <bitset>     //STL 位集容器

#include <cctype>

#include <cerrno>

#include <clocale>

#include <cmath>

#include <complex>     //复数类

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <ctime>

#include <deque>      //STL 双端队列容器

#include <exception>    //异常处理类

#include <fstream>

#include <functional>   //STL 定义运算函数(代替运算符)

#include <limits>

#include <list>      //STL 线性列表容器

#include <map>       //STL 映射容器

#include <iomanip>

#include <ios>       //基本输入/输出支持

#include <iosfwd>     //输入/输出系统使用的前置声明

#include <iostream>

#include <istream>     //基本输入流

#include <ostream>     //基本输出流

#include <queue>      //STL 队列容器

#include <set>       //STL 集合容器

#include <sstream>     //基于字符串的流

#include <stack>      //STL 堆栈容器    

#include <stdexcept>    //标准异常类

#include <streambuf>    //底层输入/输出支持

#include <string>     //字符串类

#include <utility>     //STL 通用模板类

#include <vector>     //STL 动态数组容器

#include <cwchar>

#include <cwctype>

using namespace std;

//////////////////////////////////////////////////////////////////////////

C99 增加

 

#include <complex.h>   //复数处理

#include <fenv.h>    //浮点环境

#include <inttypes.h>  //整数格式转换

#include <stdbool.h>   //布尔环境

#include <stdint.h>   //整型环境

#include <tgmath.h>   //通用类型数学宏

Stats by WP SlimStat