《C++primer》学习笔记/第一章

标准输入输出对象(4个IO对象)

cin>> 标准输出
cout<< 标准输入
cerr 输出警告和错误(standard error)
clog 输出程序运行时的一般信息

c++调试闪退问题解决(VS2010):

#include<stdlib.h>
system(“pause”); //添加到main()函数里

关于std::cout和std::endl

std::指出名字cout和endl是定义在std的命名空间(namespace)中的
如果每次都这么写,那么代码就会显得繁琐,如何避免呢?
using namespace std; //在使用前声明一下即可
" :: " 作用域运算符
std::endl的功能是换行

关于 class(类)

c++最初的设计焦点就是能够自然的使用像内置类型的类类型(class type)
标准的库头文件通常不使用后缀。编译器一般也不关心头文件名的形式,但有的IDE对此有特定要求

对于属于标准库的头文件,应使用 < >将其包围。若不属于标准库则使用双引号 " “,如:
#include //标准库
#inlcude"Sales item.h” //不属于标准库

VS2010添加头文件方法

【工程】----【配置属性】—【c/c++】—【常规】—【附加包含目录】—加入头文件的路径

test1

连续输入一组数,打印出连续输入的相同的数和次数

#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
    int currVal=0,val=0;
    if(cin>>currVal) //将第一次输入的值作为当前值
    {
        int cnt=1; //设定计数器的值
        while(cin>>val)
        {
           if(val==currVal) //判断输入是否与当前值相等
           {
               cnt++; //相等则次数+1
           }
           else
           {
               cout<<currVal<<"  occurs"<<cnt<<"  times."<<endl;
               currVal= val;//出现新值,更新当前值
               cnt=1;//更新计数器的值
           }
       }
       cout<<currVal<<"  occurs"<<cnt<<"  times"<<endl;
    }
    system("pause");
    return 0;
}

if的判断

if(cin>>total) //判断是否有输入
if(totalcurr) //判断两值是否相等
上面两种做法都是正确的,但是不能在if()里面输入值的同时做判断,如:
if(cin>>total
curr) //便会报错

常见术语

参数(实参,argument)向函数传递的值
程序块(block)花括号包围的语句序列
缓冲区(buffer)保存数据的存储区域。通常,读cin会刷新cout;程序非正常终止也会刷新cout。
Cerr 一个ostream对象,关联到标准错误
注释(comment)被编译器忽略的程序文本
iostream 头文件,提供面向流的输入输出的标准库类型
istream 提供面向流的输入的库类型
ostream 标准库类型,提供面向流的输出
源文件(source file)包含C++程序的文件
:: 作用域运算符
<= 小于或等于;>= 大于或等于(注意<和=的书写顺序)

C++是一种静态数据类型语言,编译时就会类型检查,所以编译器必须知道程序中的每一个变量对应的数据类型
可寻址的最小内存块称为“字节(byte)”,存储的基本单元称为“字(Word)”,通常它由几个字节组成。1byte=8bits(位)

数据类型的意义

为了赋予内存某个地址的明确含义,必须首先知道存储在该地址的数据类型。类型决定数据所占的比特数以及如何解释这些比特的内容。
unsigned(无符号类型)中所有bit都用来存储值
如何选择类型
1.明确数值不为负时,选用无符号类型
2.使用int执行整数运算。若数值超过int的表示范围,则使用long long
3.算术表达式不要使用char和bool
4.执行浮点数运算使用double,因为float通常进度不够而且双精度浮点数和单精度浮点数的计算代价差不多,有些机器甚至运算double比float还要快。

类型转换
bool b=42;       //b为真
int i = b;       //i=1
i = 3.14;        //i=3
double pi = i;   //pi=3.0
unsigned char c = -1; //假设char占8bit,c的值为255
signed char c2 = 256;  //假设char占8bit,c2的值是未定义的

当赋给无符号类型一个超出表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数
赋给带符号位的值超过范围时,结果是未定义
程序应尽量避免依赖于实现环境的行为,如果我们把int的尺寸看做是确定不变的数值,那么这样的程序就是不可移植的

字面值常量
'a'     //字符字面值,单引号括起来的一个字符称为char型字面值
"Hello world!"   //字符串字面值,双引号括起来的零个或多个

转义符

\r   回车符   \n   换行符    横向制表符   \t    纵向制表符   \v

也有泛化的转义字符,其形式是:
\x 后紧跟1个或多个十六进制数字
\ 后至多跟3个二进制数字

指定字面值的类型

L'a'        //宽字符型字面值,类型是wchar_t
u8'hi!'     //utf-8字符串字面型
42ULL       //无符号整型字面值,类型是unsigned long long
1E-3F       //单精度浮点型字面值
3.14159L    //扩展精度浮点型字符

/*前缀*/
u    //unicode 16字符    char16_t   
U    //unicode 32字符    char32_t  
L    //宽字符            wchar_t
u8   //UTF8 (仅用于字符串字面型常量)

/*后缀*/
u or U  //unsigned   以下均是最小匹配类型
i or L  //long
ii or LL  //long long
f or F   //float 
l or  L  //long double
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值