学习笔记一:C++基本数据类型

184 阅读3分钟
一般来说 C++ 基本数据类型有以下几种:
  • 整型            说明符为int
  • 字符型         说明符为char
  • 浮点型         说明符为float ,double 
  • 布尔型          说明符为bool 
  • 无类型          说明符为void
  • 宽字符型       说明符为wchar_t
为了满足各种情况的需要,在上述几种类型前面可以加上修饰符改变原来的含义。主要的修饰符有以下4种
  • signed:     表示有符号
  • unsigned:  表示无符号
  • long:          表示长型
  • short:         表示短型

下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。

注意: 不同系统会有所差异,一字节为 8 位。
注意: 默认情况下,int、short、long都是带符号的,即 signed。
注意: long int 8 个字节,int 都是 4 个字节,早期的 C 编译器定义了 long int 占用 4 个字节,int 占用 2 个字节,新版的 C/C++ 标准兼容了早期的这一设定。

类型范围
char1 个字节-128 到 127 或者 0 到 255
unsigned char1 个字节0 到 255
signed char1 个字节-128 到 127
int4 个字节-2147483648 到 2147483647
unsigned int4 个字节0 到 4294967295
signed int4 个字节-2147483648 到 2147483647
short int2 个字节-32768 到 32767
unsigned short int2 个字节0 到 65,535
signed short int2 个字节-32768 到 32767
long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int8 个字节0 到 18,446,744,073,709,551,615
float4 个字节精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字)
double8 个字节双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字)
long long8 个字节双精度型占8 个字节(64位)内存空间,表示 -9,223,372,036,854,775,807 到 9,223,372,036,854,775,807 的范围
long double16 个字节长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。
wchar_t2 或 4 个字节1 个宽字符

类型转换
隐式转换  :系统默认的,不需要加以声明就可以进行的

int main() {  
    char ch;  
    ch = 'a';  
    int i = ch;  
    std::cout << ch << std::endl;  
    std::cout << i << std::endl;  
    return 0;  
}

输出结果:
D:\C++Work\cmake-build-debug\C__Work.exe
a
97

显示转换 :用户手动指出需要转换的类型。不保证转换是否安全需要程序员额外指出。

int main() {
    char ch;
    ch = 'a';
    int i;
    i = (int) ch;
    std::cout << ch << std::endl;
    std::cout << i << std::endl;
}

输出结果:
a
97

练习: 要实现根据用户输入的x值,计算函数y的值,函数y 的值定义如下:

当x大于某一个数10时,y=M*x+1当x小于某一个数10时,y=(x+M)*x-3

#include <iostream>
#include "test7.h"
#define M 1

const int N = 10;

int main() {
    int x, y;
    std::cout << "请输入一个数" << std::endl;
    std::cin >> x;
   if (x < N) {
        y = M * x + 1;
    } else {
        y = (x + M) * x - 3;
    }
    std::cout << x <<" "<< y << std::endl;
}