zoukankan      html  css  js  c++  java
  • 第二、三章 开始学习C++、数据处理

    第二章

    main()函数:

    • 通常main()被启动码调用,而启动码是由编译器添加到程序中的,是程序和操作系统之间的桥梁。
    • main()函数在返回时没有遇到返回语句,则默认以
    return 0

    结尾。

    C和C++有一项不同寻常的特征——可以连续使用赋值运算符。(Python也可以)

    第三章

    整形:

    • short 至少16位
    • int     至少比short长
    • long  至少32位
    • long long 至少64位

    sizeof (int)返回类型的长度,sizeof VAR返回变量的长度,可选括号。

    climits定义了符号常量来表示类型的限制。

    C++允许初始化语句:

    int wrens(432)

     申明的变量不赋值,将会指向一个不确定的值。

    整形字面值:

    • 第一位为1~9,十进制
    • 第一位为0,8进制
    • 第一位为0x/0X,十六进制

    cout对象默认输出转为十进制。

    头文件iostream提供了控制符endl(换行)、dec(十进制)、hex(十六进制)、oct(八进制)。

    int A = 0x42;
    cout << hex;
    cout << A;

    int被设置为目标计算机的自然长度。 

    C++默认将整型常量(不是太大)存储为int类型(除非有后缀:l/L, u/U(无符号整形), LU, C++11(LL,ULL)(注:不区分大小写))。

    十进制与十六进制/八进制默认存储不同:

    对于不带后缀的十进制整数,用能够存储该整数的最小类型存储(int, long, long long)

    对于不带后缀的十六进制或八进制整数使用(int, unsigned int, long, unsigned long, long long, unsigned long long)

    char 类型:

     避免控制台输出后秒退:

    1. cin.get()

    2. system("pause")

    一个历史遗留问题:

    为什么会有cout.put()函数?

    C++ Release 2.0之前cout将字符变量显示为字符,而字符常量显示为数字(存储为int类型)。

    char ch = 'M';

    常量‘M’中复制8位(左边8位)到ch中。

    可以基于字符的8进制或16进制ASCII编码来使用转义序列。

    cin和cout将输入和输出看作是char流,因此不适合处理wchar_t类型,iostream头文件的最新版本提供了wcin和wcout,可用于处理wchar_t流(L作为前缀)。

    浮点数:

    单精度双精度在存储中,都分为三个部分:

    符号位 (Sign):0代表正数,1代表为负数;

    指数位 (Exponent):用于存储科学计数法中的指数数据;

    尾数部分 (Mantissa):采用移位存储尾数部分;

    浮点常量默认为double类型,后缀F表示单精度,后缀L表示long double。

     【以下内容取自网络】

    单精度 float 的存储方式如下:

    8.5,用二进制的科学计数法表示为:1.0001*clip_image002[2]

    按照上面的存储方式,符号位为:0,表示为正,指数位(移码)为:3+127=130 ,位数部分为,故8.25的存储方式如下图所示(IEEE754浮点数编码):

    双精度 double 的存储方式如下:

    阶码的移码的偏移量为127,一般的移码为符号位取反的补码(即偏移量为128)。

    为什么要用移码?

    方便计算机浮点数大小的比较。

    阶码的移码的偏移量为127?

    因为阶码的0000 0000和1111 1111都有特殊用途,因此阶码的移码取值范围限定为1~254,偏移量为128的话,原码0111 1111(127)溢出。

    阶码原码的取值范围?

    原码为1111 1111(-127)时,偏移量为127时移码明显会产生下溢;补码1000 0000为-128的补码,加127的偏移时依然会产生下溢。因此阶码原码的取值范围为-126~127。

    IEEE754浮点数的取值范围?

    1*(2)^(-126) ~ 2*(2)^127(1.111 1111 11111 1111 1111 1111 = 1+1/2*(1-(1/2)23)/(1/2)近似于2)。

     十进制浮点数的精度(有效位数)?

    -log(10)(2^-23) = 6.924。

    double的有效位为16位。

    C++算术运算符

    整型提升:

    C++在计算时,自动将int以下的整型转换为int类型进行计算,之后再赋值到各自的类型。

    两种不同整型操作时,自动归一到大整型(两种不同类型之间操作时同样遵守这一规则)。

    强制类型转换:

    (long) thorn (C语言风格)

    long (thorn)

  • 相关阅读:
    我的技术移民之路(一)移,还是不移
    【新消息】 请问签证和护照有什么区别啊?_爱问知识人
    Australia Visa Information China Chinese Visa Types
    HqBaiduMusic百度音乐高品质下载Chrome扩展
    分享:一个支持并发, 支持异步/同步, 支持http/https, 支持续传的avhttp库
    linux世界里类似source insight的工具(zz)如梦初醒中国教育人博客
    分享:Fix8 0.7.0 发布,C++ 金融信息交换协议实现
    我的技术移民之路(一)移,还是不移
    转:javascript null和undefined 区别
    javascript Frame和IFrame
  • 原文地址:https://www.cnblogs.com/sungnox/p/7577636.html
Copyright © 2011-2022 走看看