美文网首页鲸落消零派
C语言-基本数据类型

C语言-基本数据类型

作者: 浮华_du | 来源:发表于2021-07-20 13:28 被阅读0次

几篇文章复习C语言,摘录重点,仅用于个人学习~

基本数据类型.png

基本数据类型

short、int、long、float、double、char这六个关键字代表C 语言里的六种基本数据类型。
基本类型书写

  • 整数
    a,默认为10进制 ,10 ,20。
    b,以0开头为8进制,045,021。
    c.,以0b开头为2进制,0b11101101。
    d,以0x开头为16进制,0x21458adf。
  • 小数
    单精度常量:2.3f 。
    双精度常量:2.3,默认为双精度。
  • 字符型常量
    用英文单引号括起来,只保存一个字符'a'、'b' 、'*' ,还有转义字符 '\n' 、'\t'。
  • 字符串常量
    用英文的双引号引起来 可以保存多个字符:"abc"。

字节长度

在不同的系统上,这些类型占据的字节长度是不同的(1byte = 8bit):

16位编译器:
char/unsigned char :1字节
char :2字节
short int:2字节
int/unsigned int:2字节
long int:4字节
float:4字节
double:8字节*

32位编译器:
*char/unsigned char :1字节
char :4字节
short int:2字节
int/unsigned int:4字节
long int:4字节
float:4字节
double:8字节
long long:8字节
long double:12字节

64位编译器:
char/unsigned char :1字节
char *:8字节
short int:2字节
int/unsigned int:4字节
long int:8字节
float:4字节
double:8字节
long long:8字节
long double:16字节

具体可以用sizeof测试一下即可。


#include <stdio.h>

int main(int argc, const char * argv[]) {
    printf("char==%lu\n",sizeof(char));
    printf("unsigned char==%lu\n",sizeof(unsigned char));
    printf("char *==%lu\n",sizeof(char *));
    printf("short int==%lu\n",sizeof(short int));
    printf("int==%lu\n",sizeof(int));
    printf("unsigned int==%lu\n",sizeof(unsigned int));
    printf("long int==%lu\n",sizeof(long int));
    printf("float==%lu\n",sizeof(float));
    printf("double==%lu\n",sizeof(double));
    printf("long long==%lu\n",sizeof(long long));
    printf("long double==%lu\n",sizeof(long double));
    return 0;
}
//char==1
//unsigned char==1
//char *==8
//short int==2
//int==4
//unsigned int==4
//long int==8
//float==4
//double==8
//long long==8
//long double==16

整型

int 一般占用 4 个字节(Byte)的内存,共计 32 位(Bit)。如果不考虑正负数,当所有的位都为 1 时它的值最大,为 232-1 = 4,294,967,295 ≈ 43亿
让整数占用更少的内存可以在 int 前边加 short,让整数占用更多的内存可以在 int 前边加 long;short、int、long 是C语言中常见的整数类型,其中 int 称为整型,short 称为短整型,long 称为长整型。

浮点型

image.png
   printf("float 最小值: %E\n", FLT_MIN );
   printf("float 最大值: %E\n", FLT_MAX );
   printf("精度值: %d\n", FLT_DIG );

https://www.runoob.com/w3cnote/float-and-double-different.html

原码,反码,补码

数值的表示方法——原码、反码和补码,在计算机系统中,数值一律用补码来存储.

原码:最高位为符号位(0正,1负),其余各位为数值本身的绝对值
反码:

  • 正数:反码与原码相同
  • 负数:符号位为1,其余位对原码取反

补码:

  • 正数:原码、反码、补码相同
  • 负数:最高位为1,其余位为原码取反,再对整个数加1

https://www.136.la/jingpin/show-64808.html

#include <stdio.h>
int main()
{
   
    int x = -1;

    //int是四字节,1字节8位,所以-1有32位,最高位符号位

    //原码:1000 0000 0000 0000 0000 0000 0000 0001

    //反码:1111 1111 1111 1111 1111 1111 1111 1110

    //补码:1111 1111 1111 1111 1111 1111 1111 1111

    int y = 3;//正数原码,反码,补码全部相同

    //int是四字节,1字节8位,所以-1有32位,最高位符号位

    //原码:0000 0000 0000 0000 0000 0000 0000 0011

    //反码:0000 0000 0000 0000 0000 0000 0000 0011

    //补码:0000 0000 0000 0000 0000 0000 0000 0011

    //求x+y?

    //在计算机系统中,数值一律用补码来存储,

    //x的补码:1111 1111 1111 1111 1111 1111 1111 1111

    //y的补码:0000 0000 0000 0000 0000 0000 0000 0011

    //x+y :0000 0000 0000 0000 0000 0000 0000 0010 -----如果最高位(符号位)有进位,则进位被舍弃。

    //因此x+y=2

    printf("%d\n", x+y);

    //总结:负数:由补码获取源码<=>直接将补码减1,然后除去符号位全部取反

    return 0;
}

取值范围

int 一般占用 4 个字节(Byte)的内存,共计 32 位(Bit),其中一位是符号位
所以int取值范围 2147483648~2147483647 (-231~231-1)


image.png

类型转换

类型转换规则.png

不同类型数据之间的运算要注意精度扩展问题,一般低精度数据将向高精度数据扩展。

交互

在C语言中,有多个函数可以从键盘获得用户输入:
scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。%d
getchar()、getche()、getch():这三个函数都用于输入单个字符。%c
gets():获取一行数据,并作为字符串处理。%s

#include <stdio.h>
int main()
{
    int a = 0, b = 0, c = 0, d = 0;
    scanf("%d", &a);  //输入整数并赋值给变量a
    scanf("%d", &b);  //输入整数并赋值给变量b
    printf("a+b=%d\n", a+b);  //计算a+b的值并输出
    scanf("%d %d", &c, &d);  //输入两个整数并分别赋值给c、d
    printf("c*d=%d\n", c*d);  //计算c*d的值并输出

    return 0;
}
//123
//123
//a+b=246

相关文章

网友评论

    本文标题:C语言-基本数据类型

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