第一阶段03 C语言基础数据类型

加入CSDN是出于记录,希望有不足之处多加指正。

1.整型

  • 概念:用来表达一个整数型的数据。
  • int a = 2;
  • 需要注意:

1.先分配一片内存,命名为a;

2.根据数据的类型来分配内存大小(32位/64位系统整型都占4字节32位)

3.把数据2存放到该内存中
例: 4个字节 x 8位 (11001000) = 32位

4.最大值与最小值:-2147483648——2147483647
有符号的整型(32位):
在这里插入图片描述
5.整型的内存所占的空间大小由系统位数来决定,典型的32位和64位都占用4字节,32个位。
注意修饰:
short 短整型,是正常整型的一半,如果int为4自己则短整型为2字节,缩短整型的取值范围减少内存浪费
long长整型,是整型的两倍,如果int为4自己则短整型8字节,增大整型的取值范围,增加内存的宽度
long long长长整型,是整型的两倍(64位i系统),如果int为4自己则短整型为8字节,增大整型的取值范围,增加内存的宽度。
unsigned无符号,去除变量的符号位,用来无符号整型的取值范围,得到更大的取值范围,但是失去负数的取值

//如果定义了数据并且没有赋值——初始化,则该数据的内容是无法预测的
short s;
long l;
long long ll;
unsigned un = 10;    //初始化
un = 11;             //赋值

6.格式控制符:

%d 输出十进制整数
%hd 输出十进制的短整型
%ld 输出十进制的长整型
%o 以八进制输出数据  (不显示 o)
%x 以十六进制输出数据 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
%#o 以八进制输出数据  (# 是显示 o)
%#x 以十六进制输出数据

2.浮点型

  • 概念:用来表达实数的数据类型(有小数点的数据)
  • 分类

 1. float  //单精度典型的尺寸为4字节
 2. double  //双精度典型的尺寸为8字节
 3. long double  //长精度典型的尺寸为16字节
 4. 占用的内存越多则精度越精确

注意:浮点数存储与读取过程可能会造成精度丢失。(数据存进去再取出来数据可能会发生变化),以32位浮点数为例,其存储的内部情况是这样的:
在这里插入图片描述

3.字符


 1. char ch1 = 'a';   //'a'表示一个字节,代表字母a
 2. char ch2 = '\n';  //'\n'表示一个字符,代表一个回车键

字符类型的数据其实是一个字节的正整型,每一个字符都有对应的一个正整数,这个对应关系有一个ASCII码表。

// man ascii 查看
int a = 99;
printf("%c \n", a);   //将输出99所对应的字母 c
char c = 'd';
printf("%d\n", c);   //将输出字符d所对应的十进制编码 100

4.字符串

//定义可以通过两个方式来表示字符指针,字符数组
char *s1 = "hello" ;  //使用一个字符指针来表示一个字符串
char s2[] = "STY"     //使用一个数组来表示一个字符串
//如果使用数组来表示字符串,数组中括号打大小可以省略,
//如果不省略必须要比字符串所需空间大 +1,s2[4]

字符串在内存中大存储:
1.是以字符串数组的形式来表示。
2.任何一个字符串都是以 ’\0‘ 来表示结束。s2 = {‘S’, ‘T’, ‘Y’, ‘\0’};

5.布尔类型

  • 概念:布尓類型只有真/或假兩種取值,非零則真,零為假。
  • 注意:使用布尓類型需要添加頭文件。

#include <stdbool.h>

#include <stdio.h>
#include <stdbool.h>  //使用bool时加上这个头文件

int main(int argc, char const *argv[])
{
    
    
  bool flag1 = false;   //为假
  bool flag2 = true;   //为真
  printf("%ld\n", sizeof(flag1));  //bool类型占用1字节
  printf("%ld\n", sizeof(false));  //占用4字节,实际上等价于数字 0
  printf("%ld\n", sizeof(true));   //占用4字节,实际上等价于 1
  
  printf("%d\n", true);     //其实是数字1
  printf("%d\n", false);     //其实是数字0
  return 0;
}

6.常量与变量

  • 常量:不可以改变内存内容的成为常量,可以改变内存内容的称为变量。
int a = 10;    // a 就是变量,而10 就是常量
float f = 4.23  //f 就是变量,而4.23 就是常量
char ch[] = "school"; // ch就是变量,而“school”就是常量

常量类型:

10 整型常量 int
10L 长整型 long
10LL 长长整型 long long
100UL 无符号的长整型 unsigned long
4.12 双精度浮点 double
4.12L 长双精度浮点 long double
‘a’ 字符型 char
“boy” 字符串指针char * 字符串常量,匿名数组

7.标准输入

  • 概念:键盘就是系统默认的标准输入文件,从键盘获取数据就是从标准输入获取数据。
scanf();   //格式化输入函数(必须按照它的格式来输入,否则数据将被遗留在缓冲区中)
scanf("%d", &num);  //从键盘获得整数,并存放到地址&num

所以程序员需要把缓冲区的内容清空:

scanf("%d" , &num);    
while(getchar() != '\n');  //清空缓冲区,给scanf清空
fgets();   //字符串输入函数(获取一行数据)
头文件:
#include <stdio.h>
char * fgets(char *s, int size, FILE *stream);
s 指读取到的数据所存放的内存地址
size 指读取的字节数
stream 指文件指针(stdin 标准输入,stdout 标准输出,stderr 标准出错)

int main()
{
    
    
   char buf[32];
   //从标准输入文件中获取32个字节到buf的内存中
   fgets(buf , 32 , stdin);
   //已读 size-1个字符为止,第32个字符将不被读取,而自动被结束符'\0' 代替
   printf("读取到的字符串为:%s\n", buf );
   return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_61557794/article/details/121646819
今日推荐