Cpp primer plus notes

Cpp primer plus notes

ch2. get start

include 预处理器编译指令。

using namespace 编译指令。

void关键字显示说明不接受任何参数。

//myfirst.cpp
#include <iostream>
int main(void)
{
    using namespace std;
    cout << "Come up and c++ me some time.";// << : 为插入运算符,将字符串插入到输出流当中. [cout对象]
    cout << endl;
    cout << "You won't regret it!" << endl;
    return 0;
}
// << 运算符被重载, 同一个符号可能有多重含义,编译器根据上下文确定其具体功能.
// endl 是C++ 的特殊符号. 控制符:重启一行.在iostream中定义 位于std namespace中. [ manipulator ] 等同于:\n
// 差别在于endl保证程序继续运行前刷新输出, 使用\n不能保证.

main函数被启动代码调用,启动代码是编译器添加到程序中的。在C语言中main()函数省略返回值类型,默认是返回int,在C++中弃用了这种用法,显式声明。

// cpp的输入输出工具, 需要包含如下两行代码 cin cout包含在iostream中.
// 预处理指令作用: 将iostream文件内容添加到程序中; 在源码编译之前,添加或者替换文本.
#include <iostream>
using namespace std;
#include <iostream>
int main()
{
    using namespace std;
    int carrots; // 变量声明 指定变量类型和存储名称. defining declaration == definition编译器会为该变量分配内存空间 C++首次使用前声明
    carrots = 25;
    cout << "I have ";
    cout << carrots;
    cout << " carrots.";
    cout << endl;
    carrots = carrots - 1;
    cout << "Crunch, crunch. Now I have " << carrots << " carrots." << endl;
    return 0;
}
#include <iostream>

int main()
{
    using namespace std;
    int carrots;
    cout << "How many carrots do you have?" << endl;
    cin >> carrots; // cin也是一个智能对象 需要右侧提供一个变量抽取信息
    cout << "Here are two more. ";
    carrots += 2;
    cout << "Noew you have " << carrots << " carrots." << endl;
    return 0;
}
// cin 是 istream类对象 也是在iostream中定义的.

在使用函数之前C++必须知道函数的参数类型和返回值类型.

#include <iostream>
#include <cmath>

int main()
{
    using namespace std;
    double area;
    cout << "Enter the floor area, in square feet, of your home: ";
    cin >> area;
    double side;
    side = sqrt(area);
    cout << "That's the equivalent of a square " << side
         << " feet to the side." << endl;
    cout << "How fascinating!" << endl;
    return 0;
}

#include <iostream>
void simon(int);

int main()
{
    using namespace std;
    simon(3);
    cout << "Pick an integer: ";
    int count;
    cin >> count;
    simon(count);
    cout << "Done!" << endl;
    return 0;
}

void simon(int n)
{
    using namespace std;
    cout << "Simon says touch your toes " << n << " times" << endl;
}

#include <iostream>

int stonetolb(int);

int main()
{
    using namespace std;
    int stone;
    cout << "Enter the weight in stone: ";
    cin >> stone; // >> 抽取运算符
    int pounds = stonetolb(stone);
    cout << stone << " stone = ";
    cout << pounds << " pounds." << endl;
    return 0;
}

int stonetolb(int sts)
{
    return 14 * sts;
}

ch3. 处理数据

变量名: 精确,统一.

ANSI C99变量名63个字符长度;

整型:char、 short(至少16bit) 、int、 long(至少32bit) 、long long(至少64bit c++11)

sizeof运算符获取变量位宽. 单位字节.

#define 也是预处理器编译指令

#include <iostream>
#include <climits>

int main()
{
    using namespace std;
    int n_int = INT_MAX;
    short n_short = SHRT_MAX;
    long n_long = LONG_MAX;
    long long n_llong = LLONG_MAX;

    cout << "int is " << sizeof(int) << " bytes." << endl;
    cout << "short is " << sizeof n_short << " bytes." << endl;
    cout << "long is " << sizeof n_long << " buyes." << endl;
    cout << "long long is " << sizeof n_llong << " bytes." << endl;

    cout << "Maximum values:" << endl;
    cout << "int: " << n_int << endl;
    cout << "short: " << n_short << endl;
    cout << "long: " << n_long << endl;
    cout << "long long: " << n_llong << endl << endl;

    cout << "Mimium int value = " << INT_MIN << endl;
    cout << "Bits per byte = " << CHAR_BIT << endl;
    return 0;
}
// sizeof的运算符. 对于变量来说括号()是可选的 !

C++初始化语法

int wrens(423); // int wrens = 423;

int wrens = {423};

int wrens{423};

int wrens = {}; // 大括号是空的场景,变量将被初始化为0.大括号初始化器 ---- 使常规变量与类变量方式更像】

int wrens{};

警告:如果不对函数内部定义的变量进行初始化,该变量的值是不确定的,这意味着该变量的值将是它被创建之前,相应内存单元保存的值.【残留值】

#include <iostream>
#include <climits>
#define ZERO 0

int main()
{
    using namespace std;
    short sam = SHRT_MAX;
    unsigned short sue = sam;
    cout << "Sam has " << sam << " dollars and Sue has " << sue;
    cout << " dollars deposited." << endl
         << "Add $1 to each account." << endl << "Now ";
    sam += 1; // 翻转为负值最小值 -32768
    sue += 1;
    cout << "Sam has " << sam << " dollars and Sue has " << sue;
    cout << " dollars deposites.\nPoor Sam!" << endl;

    sam = ZERO;
    sue = ZERO;
    cout << "Sam has " << sam << " dollars and Sue has " << sue;
    cout << " dollars deposites." << endl;
    cout << "Take $1 form each account." << endl << "Now ";
    sam -=1;
    sue -=1; // 翻转为最大值 65535
    cout << "Sam has " << sam << " dollars and Sue has " << sue;
    cout << " dollars deposites.\nLucky Sue!" << endl;
    return 0;
}
[root@localhost cpp]# ./a.out
Sam has 32767 dollars and Sue has 32767 dollars deposited.
Add $1 to each account.
Now Sam has -32768 dollars and Sue has 32768 dollars deposites.
Poor Sam!
Sam has 0 dollars and Sue has 0 dollars deposites.
Take $1 form each account.
Now Sam has -1 dollars and Sue has 65535 dollars deposites.
Lucky Sue!

无论是有符号数还是无符号数,整型最大值和最小值相邻的 +1 -1转换;

对于short 无符号 0 - 1 --> 65535

对于short有符号 32767 + 1 --> -32768 -32768 - 1 --> 32767

注意 上溢和下溢;

自然长度int 如果没有特别理由选择int作为变量类型, 处理效率最高。

//3.3
#include <iostream>
int main()
{
    using namespace std;

    int chest = 42;
    int waist = 0x42;
    int inseam = 042;

    cout << "Monsieur cuts a striking figure!\n";
    cout << "chest = " << chest << " (42 in decimal)\n";
    cout << hex; // 改变显示字面值的base 16进制 控制符std::hex 修改显示整数的方式
    cout << "waist = " << waist << " (0x42 in hex)\n";
    cout << oct; // 改变显示字面值的base 8进制
    cout << "inseam = " << inseam << " (042 in octal)\n";
    return 0;
}

默认情况下cout以十进制显示整数.

C++如何确定常量类型:

除非有理由存储为其他类型(特殊后缀,数值太大) C++将整形常量存储为int.


//p49 程序清单3.6
上一篇:Java集合容器


下一篇:Android notes——第一行代码笔记(第三版)