(1)c++学习笔记--变量和基本类型

1. 基本类型

基本数据类型包括算术类型和空类型。其中算术类型包括整型和浮点型;整型包括字符和bool。

算术类型的尺寸根据平台的不同而有差异,标准尺寸为:

char: 8bit , wchar_t: 16bit, char16_t: 16bit, char32_t: 32bit

short: 16bit,int: 16bit, long 32bit,long long 64bit

float:6位有效数字,double: 10位有效数字,long double 10位有效数字

unsigned和signed,有符号数字才能表示负数。

2. 类型转换
  1. 不同精度的类型之间互相转换会丢失精度。
  2. 有符号数赋值给无符号数时,结果没法预测。
#include <iostream>
using namespace std;
int main(){
    int u = 10;
    int i = -42;
    cout<<u+i<<endl;  //结果是4294967264,取模后的值
    return 0;
}
  1. 以0开头的整数是八进制表示,以0x或0X的是十六进制表示。
  2. 科学计数法,以e或E。
  3. 字符或字符串前后缀:
//前缀
u: char16_t
U: char32_t
L: wchar_t
u8: utf-8类型
//后缀
u/U: unsigned
f/F: float
l/L: long
ll/LL: long long
  1. 由extern关键字修饰的变量不能初始化,只代表声明该变量,声明和定义的区别:定义会申请存储空间。
3. 复合类型
int a = 1;
int *b = &a;   //*是指针,&是取地址符
int &c = a;   //&是引用
*b = 2;       //*此时解引用,给a重新赋值,c也变为了2
  1. void * 可以存放任意对象的地址,但不能直接操作,因为不知道里面存放的到底是什么对象。
  2. int *&i; 从右往左边读,最靠近i的是&,说明i是一个引用,引用的是一个指针,并且是是一个int指针。
  3. 存放常量对象的地址必须用指向常量的指针。
const int *p = 1;   //p是一个指向常量的指针
const double pi = 3.1415;
const double *const pip = &pi;  //const指针

4.顶层const:指针本身是常量;底层const:指针指向的对象是常量。
5. constexpr: 常量表达式,不可变并且在编译时就能得到结果的表达式。
6. 类型别名,有两种方式实现,一种是typedef,一种是using。

typedef double test;   //test等同于double了
typedef test test2 *p; //test2等同于test,*p等同于*double
using SI = Sales_item;   //SI等同于Sales_item了

7.auto关键字,自动推断类型;decltype关键字,只推断出类型,但是不用这个值来初始化。

const int ci = 0;
decltype(cj) x = 0;   //只推断出cj是int型

8.预处理器:在编译之前执行的一段程序。

#ifndef SALES_DATA_H    //头文件保护符,如果没有定义,才执行下面的代码,该头文件才会被拷贝到代码中
#define SALES_DATA_H    //定义头文件保护符
#include <string>     //这也是预处理功能,预处理程序会用string代替#include
using namespace std;
struct Sales_data {
    string bookNo;
    unsigned units_sold = 0;
    double revenue = 0.0;
};
#endif SALES_DATA_H   //结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值