美文网首页
c++笔记1

c++笔记1

作者: 天然呆的达斯琪 | 来源:发表于2018-12-30 21:14 被阅读0次

1.数据类型


图1-数据类型

黑色的是c和c++共有的数据类型,
红色的是c++独有的数据类型。


2.基本类型数据的内存长度和数值范围


图2.1

所以无符号类型用原码表示,
有符号类型用补码表示。

图2.2

具体参见->计算机中数值的表示方式


其中,C,C++规定,16进制数必须以 0x开头,8进制以0开头,貌似没有规定2进制。
在数制使用时,常将各种数制用简码来表示:如十进制数用D表示或省略;二进制用B来表示;十六进制数用H来表示。
如:十制数123表示为:123D或者123;二进制数1011表示为:1011B;十六进制数3A4表示为:3A4H

#include<iostream>
using namespace std;
int main(int argc, char const *argv[])
{
    int a=0x11,b=0011;
    cout<<a<<endl<<b<<endl;
    return 0;
}

运行结果:


图2.3

3.关于补码
取四位二进制数,它们的补码如下所示

  1111 = -1         0000 = 0

  1110 = -2         0001 = 1

  1101 = -3         0010 = 2

  1100 = -4         0011 = 3

  1011 = -5         0100 = 4

  1010 = -6         0101 = 5

  1001 = -7         0110 = 6

  1000 = -8         0111 = 7

那么如何计算负数的补码?

  1111 = -1         0001  ->  1110  +1  ->  1111

  1110 = -2         0010  ->  1101  +1  ->  1110

  1101 = -3         0011  ->  1100  +1  ->  1101

  1100 = -4         0100  ->  1011  +1  ->  1100

  1011 = -5         0101  ->  1010  +1  ->  1011

  1010 = -6         0110  ->  1001  +1  ->  1010

  1001 = -7         0111  ->  1000  +1  ->  1001

  1000 = -8         1000  ->  0111  +1  ->  1000

所以补码的负数就是将正数的二进制表示按位取反再加一。
值得一提的是-8的补码表示。
所以,四位二进制补码的表示范围是-8~+7。
具体参见->补码介绍


4.整型


5.浮点型

C++语言浮点型又称实型,分为单精度(float)、双精度(double)和长双精度(long double) 3种。
在C++中规定float型在内存中占用 4个字节,提供7位有效数字;
double型和long double型在内存中占用 8个字节,提供16位有效数字。

单精度变量赋值后面加f是表明该数字为单精度浮点型数字(float);类似地,后面如果加d则是表明该数字为双精度浮点型数字(double)。如果在代码中使用一个小数而没有加任何后缀,则此数字自动视为double类型。


  float a=0.00000678f;
  float b=0.00000678;
  double c=0.00000678;

a为float类型,b为double类型,c为double类型。


参考以下代码

#include<iostream>
using namespace std;
int test(int a,int b){
    return a+b;
}
float test(float a,float b){
    return a+b;
}
int main(int argc, char const *argv[])
{
    cout<<test(1,2)<<endl<<test(1.1f,1.2f)<<endl;
    return 0;
}
5.1.png

若将

cout<<test(1,2)<<endl<<test(1.1f,1.2f)<<endl;

改为

cout<<test(1,2)<<endl<<test(1.1,1.2)<<endl;

则编译出错,这个主要是函数重载解析的问题
1.选择候选函数
2.选择可行函数
3.选择最佳可行函数
test(1.1f, 1.2f),对于两个test都是候选的,也都是可行的,但是1.1f,1.2f严格匹配float参数,因为他俩就是float,所以不会有二义性
如果改成test(1.1,1.2),他俩就是double的在选择第三步时,由于double可以向int转换,也可以向float转换,而且转换具有同等地位,所以就会产生二义性


6.字符型

相关文章

  • C++学习笔记 day 1

    C++学习笔记 day 1 教学课程链接:bilibili 黑马程序员:C++从0到1入门编程[https://w...

  • C++模板库笔记

    C++标准模板库笔记(C++ Primer plus) 1.除序列外,vector还是可反转容器(reversib...

  • [163]1.1关于c++类声明的记录【GeekBand】

    //C++微专业 第一周笔记 //以下点多来自 《C++ Primer Plus 》第6版 1. C++程序组成 ...

  • C/C++与MATLAB混合编程

    C/C++与MATLAB混合编程笔记 1. 简介 C/C++和MATLAB之间的混合编程可以是:C/C++编程的过...

  • 2017-12-26

    C++面向对象程序设计 课程笔记(一) 一、C++编程简介 1.课程目标 以良好的方...

  • 深入探索C++对象模型

    一个博客,这个博客记录了他读这本书的笔记,总结得不错。《深度探索C++对象模型》笔记汇总 1. C++对象模型与内...

  • C++语法系列之8--类模板

    C++ Templates 笔记

  • C++笔记(1)

    工作原因,开始蒸腾C++,看书看不下去,只能用这种边看便吐槽的方式了。不过速度太慢了,不过至少能看下去了。这一节是...

  • C++笔记(1)

    编写自己的第一个应用程序“Hello C++” 最近在学习C++,希望能把自己理解到的记录下,第一个是为了以后好复...

  • c++笔记1

    过程:文件->新建项目->win32项目->应用程序设置(控制台应用程序,空项目)->完成。然后源程序添加.cpp...

网友评论

      本文标题:c++笔记1

      本文链接:https://www.haomeiwen.com/subject/sfqblqtx.html