【ONE·C || C语言基础知识集合·问答版(一)】

总言

  知识汇总,汇聚了各处书中内容、或者看到的视频、自己的学习资料等。
  自用,散乱模式。

一些杂七杂八的小知识

关于注释的使用

在这里插入图片描述

数据的存储

  1、数据类型的基本分类有哪些?

  2、有符号类型和无符号类型的含义?

在这里插入图片描述
  
  
  
  

整数类型(数值类型之一)

整数类型详细介绍

   1.整数类型的基本分类?
在这里插入图片描述
  

  2.这些类型的各种组合分别有哪些?英文字母表示下的类型名称是否有固定顺序要求以及名称缩写问题?
  

  3.整形中,关于int 、short、long int 基本范围要求:
在这里插入图片描述
  

  4.关于如何检查不同编译器下类型范围的方法?
在这里插入图片描述
  

  5.C99中关于整数类型的补充:
在这里插入图片描述
  

  6、如何简单估计各类型的最大、最小取值范围?
  

  7.关于C语言中各进制的使用细节说明?另,请说明为什么C语言允许使用这几种进制表示整数常量?
在这里插入图片描述
  

  8.关于各类整型在表示时的细节问题?比如,对长整型,对长长整型,对无符号类型等(在十进制、八进制、十六进制下)。
在这里插入图片描述
在这里插入图片描述
  

  9.关于整数溢出,有符号和无符号的具体情况说明?
在这里插入图片描述
  

整数类型的读写问题

  10、关于整数类型的读写问题

  10.1 基本认知:当发生整数溢出时,除了改变变量的类型,还需要对类型的相关转换说明符做检查与调整。
在这里插入图片描述

  10.2 一个例子: 说明了关于不同类型的转换说明符使用错误时会发生的情况。
在这里插入图片描述

  10.3 读写各类型所需要使用的转换说明符
  需要理解图示含义。
在这里插入图片描述
  
  

整形在内存中的存储

  1.整型在内存空间是如何存储的?为什么整数数据在内存空间是这种存储方式?

  存储方式: 整型数据在内存空间中是以补码达到形式存储。
  
  原因: 在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统 一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互换,其运算过程是相同的,不需要额外的硬件电路。

  

  2.如何理解原码、反码、补码?它们之间如何转换?如何理解符号位和数值位?
  
  

大小端字节序

  1. 什么样的数据会涉及到存储顺序?为什么会涉及到存储顺序?

  数据大于一个字节时,只要依据其存储方式按照一定规律取出,就能还原原数据,因此会产生多种存储方式。

  

  2.什么是大端字节序存储?什么是小端字节序存储?

  大端字节序存储:数据的低位字节存放在内存的高地址处,高位字节存放在内存的低地址处
  小端字节序存储:数据的低位字节存放在内存的低地址处,高位字节存放在内存的高地址处

  

  3.如何判断一个编译器是如何存储字节序的?
在这里插入图片描述

浮点数类型(数值类型之一)

浮点型在内存中的存储

  
  一个关于浮点型数据存储的例子:
在这里插入图片描述
  
  1、浮点型数据有哪些分类?其区别是什么?
在这里插入图片描述
  
  
  2、关于浮点型数据的精度存储问题?如何确定编译器下各浮点型的存储范围?

   2.1 <float.h>文件
在这里插入图片描述

   2.2 基于IEEE标准对单精度浮点型和双精度浮点型的探讨问题
  

  3、浮点型数据在C语言中的一些规则问题,以及不同浮点型数据的表示问题?

  3.1 浮点常量默认存储类型:
在这里插入图片描述
  此处注意与强制类型转换区别开来:float a=3.14f, 系统默认储存类型为float。float a=(float)3.14,系统默认储存类型为double,然而被强制类型转换为float。

  3.2 对3.1的解释:
在这里插入图片描述
  
  

字符类型

字符类型基本介绍

  1、字符类型赋值问题需要注意的细节?
在这里插入图片描述
  

  2、C语言中,char与int的联系?
在这里插入图片描述
在这里插入图片描述
  

  3、char类型数据存储和取值范围

  3.1 char类型数据与有无符号的关系
在这里插入图片描述

  3.2 char、short类型数据在内存空间中的存储
在这里插入图片描述
  

转移序列

  4.基本转义字符序列:
在这里插入图片描述
  

与字符有关的函数

  5.toupper、tolower函数
在这里插入图片描述

字符类型的读写

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  
  

类型转换

基本介绍

  为什么需要类型转换以及类型转换的基本分类:
在这里插入图片描述
  

  什么时候会发生隐式转换?
在这里插入图片描述

常用算术转换规则

  常用算术转换的基本规则?
在这里插入图片描述
在这里插入图片描述
  

  关于算术转换中需要注意的事项?(例如:有符号型和无符号型混用时的算术转换)
在这里插入图片描述
  
  

赋值过程中的类型转换规则

在这里插入图片描述
  

强制类型转换

  强制类型转换的例子其一:
在这里插入图片描述
  强制类型转化的例子其二
在这里插入图片描述
  关键点:在于理解使用强制类型转换的场景。
  

类型转换相关练习·整值提升介绍

类型转换相关练习

  题一:

1.//以下输出什么?
#include <stdio.h>
int main()
{
    char a= -1;
    signed char b=-1;
    unsigned char c=-1;
    printf("a=%d,b=%d,c=%d",a,b,c);
    return 0;
}

在这里插入图片描述
  
  
  题二:

2.//以下输出什么?
#include <stdio.h>
int main()
{
    char a = -128;
    printf("%u\n",a);
    return 0;
}

在这里插入图片描述
  
  
  题三:

3.
#include <stdio.h>
int main()
{
    char a = 128;
    printf("%u\n",a);
    return 0;
}

在这里插入图片描述

  
  
  题四、五:

4.
int i= -20;
unsigned  int  j = 10;
printf("%d\n", i+j); 
//按照补码的形式进行运算,最后格式化成为有符号整数
5.
unsigned int i;
for(i = 9; i >= 0; i--)
{
    printf("%u\n",i);
}

在这里插入图片描述

  
  
  题六:

6.
int main()
{
    char a[1000];
    int i;
    for(i=0; i<1000; i++)
   {
        a[i] = -1-i;
   }
    printf("%d",strlen(a));
    return 0;
}

读取‘\0’前的字符数,‘\0’的ascll码值为0,即读取-1到-128共128个,127到1共127个,总共127+128=255个

7.
#include <stdio.h>
unsigned char i = 0;
int main()
{
    for(i = 0;i<=255;i++)
   {
        printf("hello world\n");
   }
    return 0;
}

使用无符号类型做循环时需要慎重,数值溢出后无符号范围内又为0

  
  
  
  
  
  
  
  
  
  
  

非数值类型简单介绍

构造类型(数组、struct 、enum、union)

指针类型

空类型

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

文件操作

part1:

  1. 从文件功能角度来看,通常文件可以如何分类?
  2. 文件名的组成部分?
  3. 简单阐述为什么会有文件指针的存在?文件、文件类型和文件类型指针的关系?
  4. 文件类型取名?不同编译器下文件类型是否相同?
  5. 文件打开函数和文件关闭函数的使用(返回类型是什么、有几个形参、形参分别是什么)?关于文件扩展名需要注意的事项?
  6. 如何理解文件打开函数与文件指针、文件信息区的关系?
  7. 文件路径在文件操作函数中的使用方法(绝对路径&相对路径)?

part2:

  1. 简单阐述几种基本常用的文件使用方式?(“r”,“w”,“rb”,“rw”)细节差别?输出数据与输出数据?文件不存在的情况?
  2. 为什么文件使用方式是用双引号(字符串类型),而不是单引号(字符类型)?
  3. 常见的文件读写函数有哪些,如何称呼它们?哪些是输入函数,哪些是输出函数?它们适用于什么样的数据流?(fgetc、fputc、fgets、fputs、fwrite、fread、fscanf、fprintf)
  4. 对比下列函数,说说差异?printf、scanf、fprintf、fscanf、sprintf、sscanf。
  5. 这些输入输出函数参数的差异在哪?如何在编程中使用以上函数?(重点!即对上述函数的具体理解。)

  
  

文件编译

part1:

  1. 简单阐述什么是翻译环境,什么是运行环境?通常情况下它们分别由谁来完成?(操作系统和编译器)
  2. 简单阐述程序编译的大体逻辑(源文件、编译器、目标文件、链接库、连接器,和可执行程序之间的关系)。源文件和目标文件是一一对应的吗?目标文件后缀是什么?链接库是什么?链接器起到什么作用?上述过程是什么环境?
  3. 翻译环境中程序编译一般可分为几个阶段,不同阶段都做了什么事?(简述预处理、编译、汇编、链接各个步骤主要事项)
  4. 关于程序执行过程的简述?

part2:

  1. 常见预定义符号有哪些?分别表示什么含义?如何使用它们?(__ FILE __ 、__ LINE __ 、 __ DATE __ 、__ TIME __、 __ STDC __ 、 __ FUNC __)
  2. #define定义标识符如何使用?是否需要在定义标识符时(替换列表末)加上“;”?
  3. #define定义宏如何使用?需要注意些什么?(①函数宏在声明时,标识符与参数左括号间是否能有空格?区别是什么?②函数宏替换列表中的括号使用问题?产生它的原因是什么?)
  4. 简单阐述#define的替换规则及其注意事项。(比如替换的先后顺序、能否递归、含字符串常量时等等情况)
  5. #、##的简单使用方式?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值