C++笔记(二)

(1) 逗号运算符 确保先计算第一个表达式,然后计算第二个

i = 20, j = 2 * i; //j = 40
i = 17, 240; //(i = 17), 240
i = (17, 240); //i = 240

(2) 数组的存放是一个连续的存储空间。
     int a[3][2]; 占用了3*2个int类型,存放的数据是 a[0][0], a[0][1], a[1][0], a[1][1], a[2][0], a[2][1]
     a[3][2] = {3, 2, 1}; 是将值赋给前三个元素
     a[0][2]的值为多少呢?乍一看a[3][2]中没有这个数据(根据之前罗列的)。在C/C++编译器里,数组越界是不检查的。
     a[0][2] = *(*(a+0))2),指向*(*a+0)+1)也就是a[0][1]隔壁的元素,也就是a[1][0]。故a[0][2]的值是1。

(3) 在控制台中打印出bool的结果为true/false, 而不是1/0

bool iTrue = true;
cout << boolalpha << iTrue << endl;


(4) 头文件中包含警卫,避免单个.cpp文件期间一个头文件被多次包含

//Simple.h
#ifndef SIMPLE_H
#define SIMPLE_H
//body of header file here
#endif //SIMPLE_H


(5) 保证类型安全的链接属性(Type-safe linkage)

//Function definition
void f(int) {}
//Function misdeclaration
void f(char);
int main() {
    // f(1); //Cause a linker error
}


(6) <cassert> assert作用是先计算表达式expression,如果其值为假,那么现象stderr打印一条出错信息,然后调用abort终止程序。

     缺点:频繁调用会极大影响程序的性能,增加额外的开销。

     在调试结束后,可以通过在包含#include<cassert>的语句之前出入#define NDEBUG来禁用assert调用。

(7) <cstdlib> 类型转换

     atoi() 将ASCII字符转换成int

     atol()将ASCII字符转换成long

     atof()将ASCII字符转换成float


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值