04基于vs2022的c语言笔记——数据类型

news/2025/2/25 22:02:17

目录

前言

4.数据类型

4-1数据类型初识

4-2数据类型之整型

4-3 sizeof的应用 

4-4unsigned的应用

4-5实型/浮点型

4-6字符型

4-7转义字符

4-8字符串初识

4-9-1 输入之 整数的输入

提示:

本节代码部分 

1.scanf的基本用法介绍

2.两个变量的输入 

3.输入数字,进行四则运算 以加法举例

 4.其他整型的输入 (注意每个整型的范围)

5.其他的细节 

4-9-2输入之 浮点数的输入 

提示:

本节代码部分:

补充 :scanf的一点原理讲解

4-9-3 输入之 字符型的输入

1.用scanf_s有坑,和以往整型和浮点型的输入的格式不一样!

2.如果按照整型和浮点型的输入照猫画虎照搬格式,会发现scanf的字符输入很难用 

1.单个字符的输入 没有问题

2.两个及两个以上,就有坑!

3.字符的输入的正确方法 在4-9-4字符串的输入这一节有详细的说明

4-9-4 输入之 字符串的输入

1.简单的字符串输入的介绍

2.简单介绍一个小的注意事项 

 3.巧用字符串的输入解决字符输入的难用的问题

1.单个字符的输入

2.多个字符的输入 


前言

本套笔记是基于英雄哪里出来c语言入门到精通课程整理的笔记

包含代码,代码演示结果,以及便于理解的插图

对于想要c语言入门,于嵌入式c语言的入门的朋友来说,这是一套不可多得的教程

此教程分几篇文章发布,初步计划更新到数组,未来时间允许会继续更新

4.数据类型

4-1数据类型初识

#include <stdio.h>
int main(){
//数据类型初识
    int a = 3;
//在计算机里就是 00000000 00000000 00000000 00000011
//其中每一位0或1就是一个比特位(bite)
//每8个比特位一个字节(byte) int 这种数据类型 就是为整型变量申请4个字节的内存空间
/*
注意 以下的B为大写代表字节 而小写的b则代表比特
1B=8b
1024B=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
*/
    printf("%zu\n",sizeof(int));
/*
数据类型
整型 short,int, long, long long
浮点型(实型) float double 
字符型 char
*/
    return 0;
}

4-2数据类型之整型

#include <stdio.h>
int main(){
//整型
/*
short                  2个字节 16bite [-2`15,2`15-1]可以存[-32768,32767]这个区间里的整数
int                    4个字节 32bite [-2`31,2`31-1]
long                   4个字节 32bite [-2`31,2`31-1]
long long              8个字节 64bite [-2`63,2`63-1]
环理论见前面
*/
    short a = 1;
    int b = 1;
    long c = 1L;
    long long d = 1LL;
    printf("%hd\n",a);
    printf("%d\n",b);
    printf("%ld\n",c);
    printf("%lld\n",d);
    return 0;
}

4-3 sizeof的应用 

#include <stdio.h>
// sizeof的应用 测算所占的字节
int main(){
    short a = 1;
    int b =  1;
    long c = 1L;
    long long d =1LL;
    printf("%zu\n",sizeof(short));
    printf("%zu\n",sizeof(int));
    printf("%zu\n",sizeof(long));
    printf("%zu\n",sizeof(long long));
    return 0;
}

 

4-4unsigned的应用

#include <stdio.h>
// unsigned的应用
int main(){
    unsigned short a = 1;
    unsigned int b = 1;
    unsigned long c = 1L;
    unsigned long long d= 1LL;
    printf("%hu\n",a);
    printf("%u\n",b);
    printf("%lu\n",c);
    printf("%llu\n",d);
// unsigned short开辟的内存空间可以容纳 [0,2`16-1] 0-65535这个范围内的数 其他同理 任然是环理论
//如果unsigned short a =-1;则输出65535
    return 0;
}

4-5实型/浮点型

#include <stdio.h>
#include <float.h>
int main(){
//1.float和double的定义和输出 float的精度不够,打比赛时尽量不要使用
    float a1 = 3.1415926F;
    double b1 = 3.1415926;
    printf("%.7f\n",a1);
    printf("%.7lf\n",b1);
//2.浮点型的缩写,以double来举例
    double a2 = .6;
    double b2 = 6.;
    printf("%lf\n",a2);//在占位符前没有如“1.”中修饰默认输出小数点后6位小数
    printf("%lf\n",b2);
//3.用科学计数法表示浮点数 注意占位符的变化
    float a3 = 12.34e6F;
    double b3 = 12.34e10;
    printf("%e\n",a3);
    printf("%e\n",b3);
//4. 浮点型不能与unsigned连用
    // unsigned float a4 = 12.34F;
//5.用sizeof查看浮点型所占的字节
    printf("%zu\n",sizeof(float));
    printf("%zu\n",sizeof(double));

//6. 了解  float和double可以表示的最小正数,最大正数 注意头文件#include <float.h>的添加
    printf("float可以表示的最小正数是:%e\n", FLT_MIN);
    printf("float可以表示的最大正数是:%e\n", FLT_MAX);
    printf("double可以表示的最小正数是:%e\n", DBL_MIN);
    printf("double可以表示的最大正数是:%e\n", DBL_MAX);

    return 0;
}

4-6字符型

#include <stdio.h>
int main() {
    //字符型
    //1.格式
        // char 变量名 = 字符变量;
    char a1 = 'y';
    printf("%c\n", a1);
    //2.查看字符变量的ASCII值
    printf("%d\n", a1);
    //3.sizeof查看char所占字节
    printf("%zu\n", sizeof(char));
         /*
      注意
       不可写成
    printf("%zu\n",sizeof(a1));
    printf("%zu\n",sizeof('y'));
    因为sizeof会先把a1或者'y'变成其对应的ASCII码值再存入内存中
    而ASCII码值为整数 所以最后测算的所占字节为4个字节

      */

    //4.sizeof其实可以表示一个字节的整数 其范围是[-2`7,2`7-1] 即[-128,127]
    char b1 = 128;
    printf("%d\n", b1);
    //输出结果为-128 仍然是环理论

    return 0;
}

4-7转义字符

#include <stdio.h>
int main() {
    //转义字符
    //双引号的转义
    printf("%s\n", "我真是太\"机智\"了");
    // \的转义
    printf("%s\n", "我真是太机智了\\hhh");
    // 缩进的转义
    printf("%s\n", "我真是\t机智了");
    //消失的转义
    printf("%s\n", "我真是\0机智了");
    //换行的转义就是 \n
    return 0;
}

4-8字符串初识

#include <stdio.h>
//字符串初识
int main() {
    //1.字符串常量
    "日拱一卒";
    //2.1.字符串变量的第一种表示方法
        //格式:char 变量名[长度] = 字符串变量初识值;
    char a1[100] = "日拱一卒";
    printf("%s\n", a1); //s 即 string 字符串的意思
    //2.2字符串变量的第二种表示方法
        //格式:char 变量名[] = 字符串变量初始值;
    char b1[] = "内外兼修";
    //3.用sizeof测量字符串变量所占的字符
    printf("%zu\n", sizeof(a1));
    printf("%zu\n", sizeof(b1));
       /*
           结果是
            100
            9
           原因:在字符串双引号内容的后面还跟着\0,结束转义字符,
                一个字占2个字节,2x4+1=9
            而a1则是因为人为开辟了100字节的空间,所以测出来为100字节
       */
      //4.字符串内容的读取
    char c1[] = "hellothankyou";
    printf("%c\n", c1[5]);
    //5.字符串内容的修改
     c1[5] = ' ';
    printf("%s\n", c1);

    //6.字符串双引号内容的结尾是\0的论证
    printf("%c\n", c1[11]);
    printf("%c\n", c1[12]);
    printf("%c\n", c1[13]);
    printf("%d\n", c1[13]);//输出结果为0,而\0所对应的ASCII码值刚好是0
    return 0;
}

4-9-1 输入之 整数的输入

提示:

动用scanf会报出C4996的错误,也就是scanf不安全

解决办法:

1.把scanf改成scanf_s

2.在整个编程页面的最开始加上#define _CRT_SECURE_NO_WARNINGS

复制#define _CRT_SECURE_NO_WARNINGS 的方法

 要按住Ctrl+alt+o 跳到报错栏的输出界面

本节代码部分 

1.scanf的基本用法介绍
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){
//scanf的基本用法介绍
    int a; //在准备使用scanf前,要先定义未来准备输入的内容(整型变量,浮点型变量...)
    scanf("%d",&a);//注意格式与printf的区别 尤其是取取地址符& //未来学到指针时详细介绍这里用取地址符的原因
    printf("你输入的整数是:%d",a);

    return 0;
}

注意因为scanf是函数,所以要有返回值,不然会警告。具体的到函数那一讲再说

 

2.两个变量的输入 
#include <stdio.h>
int main(){
    int a, b;
    printf("请输入两个整数:");
    scanf_s("%d%d",&a,&b); //这里两个%d空不空格无所谓,不要打逗号,不然你输入的时候也要打逗号 注意&要有
    printf("你输入的两个整数是:%d %d",a,b);//两个%d要空格,不然输出的时候是是连在一起的
    return 0;
    
}
3.输入数字,进行四则运算 以加法举例
#include <stdio.h>
int main(){
    int a, b;
    printf("请输入两个整数:");
    scanf_s("%d%d",&a,&b);
    printf("这两个整数的和是:%d",a+b);
    return 0;
}
 4.其他整型的输入 (注意每个整型的范围)

#include <stdio.h>
int main(){
    short a;
    long b;
    long long c;
    printf("请输入三个整数:");
    scanf_s("%hd%ld%lld",&a,&b,&c);
    printf("这三个整数是:%hd %ld %lld",a,b,c);
    return 0;
}
5.其他的细节 

4-9-2输入之 浮点数的输入 

提示:

一些scanf的基础用法细节在4-9-1中已有说明,忘记了请回看

本节代码部分:

#include <stdio.h>
int main(){
    double a;
    printf("请输入一个浮点数:");
    scanf_s("%lf",&a);
    printf("你输入的浮点数是:%lf",a);
    return 0;
}

 

补充 :scanf的一点原理讲解

如果你人为输入的不是你在代码里定义的东西,scanf不接收,

如果scanf前面几行的代码有给变量赋初始值,那么则在黑框里显示初始值

如果没有赋初始值,则显示乱码

 

4-9-3 输入之 字符型的输入

1.用scanf_s有坑,和以往整型和浮点型的输入的格式不一样!

 

原因:scanf在字符的输入时,为了防止缓冲区溢出,要用单个整型参数来限定缓冲区大小,比如1。

            上面的代码格式错误,导致电脑未能正确读取人给电脑输入的字符,所以输入什么字符都给你反映 ?

正确的代码

2.如果按照整型和浮点型的输入照猫画虎照搬格式,会发现scanf的字符输入很难用 

1.单个字符的输入 没有问题
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){
    char ch;
    printf("请输入一个字符:");
    scanf("%c",&ch);
    printf("你输入的字符是:%c\n",ch);
    return 0;
}
2.两个及两个以上,就有坑!

 

原因:空格也是字符!!!所以电脑以为你人为输入的是'w'和' '。

我们可以用ASCII码来验证一下

 

3.字符的输入的正确方法 在4-9-4字符串的输入这一节有详细的说明

4-9-4 输入之 字符串的输入

1.简单的字符串输入的介绍

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){
    char str[100];//这里必须规定字符串的长度,否则会报错
    printf("请输入你的名字:");
    scanf("%s",str);//这里不需要 取地址符&
    printf("你的名字是:%s\n",str);
    return 0;
}
#include <stdio.h>
int main() {
    char str[100];
    printf("请输入你的名字:");
    scanf_s("%s", str,100);//如果用scanf_s缓冲区的大小由你规定的字符串大小决定,比如此处就是100
    printf("你的名字是:%s\n", str);
    return 0;
}

2.简单介绍一个小的注意事项 

所以有空格的字符串如何输入呢?用gets

 3.巧用字符串的输入解决字符输入的难用的问题

1.单个字符的输入
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){
    char str[100];
    char ch;
    printf("请输入一个字符:");
    scanf("%s",str);
    ch = str[0];
    printf("你输入的字符是:%c\n",ch);
    return 0;
}
2.多个字符的输入 
#include <stdio.h>
int main() {
    char str[100];
    printf("请输入三个字符:");
    gets(str);
    printf("你输入的字符是:%s\n",str);
    return 0;
}

 

 


http://www.niftyadmin.cn/n/5865980.html

相关文章

Python 学习之旅:高级阶段(十六)Web 开发之路由和视图函数

在 Python 的 Web 开发领域,路由和视图函数是构建 Web 应用不可或缺的部分。它们就像是 Web 应用的 “交通枢纽” 和 “服务窗口”,路由负责引导用户请求到达正确的处理地点,而视图函数则负责处理这些请求并返回相应的响应。接下来,我们将以 Flask 框架为例,深入了解路由和…

【R语言】ggplot2绘图常用操作

目录 坐标轴以及标签的相关主题 图例调整 字体类型设置 颜色相关 ggplot2如何添加带箭头的坐标轴&#xff1f; 标题相关主题调整 修改点图中点的大小 如何使得点的大小根据变量取值的大小来改变&#xff1f; 柱状图和条形图 坐标轴以及标签的相关主题 theme( # 增大X…

强化学习笔记(一)

强化学习笔记&#xff08;一&#xff09; 回报与价值函数贝尔曼方程全期望公式自举策略马尔可夫决策过程和马尔可夫过程/马尔可夫奖励过程的区别马尔可夫决策过程中的价值函数贝尔曼期望方程备份图 参考书目&#xff1a;蘑菇书&#xff0c;链接蘑菇书 本系列笔记仅为个人学习所…

【数据结构】C语言实现顺序表的主要功能

一.数据结构整体框架 架构解释&#xff1a; 集合&#xff1a;无序但唯一&#xff1b;只关心元素是否存在而不关心元素的顺序&#xff1b;当尝试插入重复的元素时&#xff0c;集合会忽略掉那个重复的元素。 线性表&#xff1a;元素按照顺序排列的集合&#xff1b;每个元素只有…

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(一)

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷&#xff08;一&#xff09; 第一部分&#xff1a;网络平台搭建与设备安全防护任务书DCRS:DCFW:DCWS:WAF: 第二部分&#xff1a;网络安全事件响应、数字取证调查、应用程序安全任务书任务 1&…

编译原理基础(1)

1.什么是ASCII码&#xff1f; ASCII码即美国信息交换标准代码&#xff0c;是基于拉丁字母的电脑编码系统&#xff0c;用于显示现代英语和部分西欧语言。其7位编码范围0-127&#xff0c;8位扩展到0-255。字符集含控制字符&#xff08;0-31、127&#xff0c;用于控制设备或表示通…

数据结构:Map set - 习题(三)

一、只出现一次的数字 题目链接https://leetcode.cn/problems/single-number/description/ 描述&#xff1a; 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性…

kotlin 知识点一 变量和函数

在Kotlin中定义变量的方式和Java 区别很大&#xff0c;在Java 中如果想要定义一个变 量&#xff0c;需要在变量前面声明这个变量的类型&#xff0c;比如说int a表示a是一个整型变量&#xff0c;String b表 示b是一个字符串变量。而Kotlin中定义一个变量&#xff0c;只允许在变量…