『C语言入门』初识C语言

文章目录

  • 前言
  • C语言简介
  • 一、Hello World!
    • 1.1 编写代码
    • 1.2 代码解释
    • 1.3 编译和运行
    • 1.4 结果
  • 二、数据类型
    • 2.1 基本数据类型
    • 2.2 复合数据类型
    • 2.3 指针类型
    • 2.4 枚举类型
  • 三、C语言基础
    • 3.1 变量和常量
    • 3.2 运算符
    • 3.3 控制流语句
    • 3.4 注释
      • 单行注释
      • 多行注释
      • 注释的作用
  • 四、 函数
    • 4.1 函数的声明和定义
    • 4.2 函数的参数和返回值
    • 4.3 函数的调用
    • 4.4 主函数(main函数)
    • 4.5 内置函数和自定义函数
  • 五、 数组和字符串
    • 5.1 数组的声明和初始化
    • 5.2 多维数组
    • 5.3 字符串
    • 5.4 字符串处理函数
    • 5.5 字符串输入和输出
  • 六、 指针和内存管理
    • 6.1 指针的概念
    • 6.2 指针的运算
        • 6.3 动态内存分配
        • 6.4 指针和数组的关系
  • 七、文件操作和输入/输出
    • 7.1 文件操作
    • 7.2 格式化输入/输出
    • 7.3 标准输入/输出
  • 八、错误处理和调试
    • 8.1 错误代码
    • 8.2 断言
    • 8.3 调试器
    • 8.4 日志和打印调试信息
  • 结语

前言

在这个数字化时代,计算机编程已经成为连接人类与技术的桥梁。而在编程的世界中,C语言犹如一座承载着无限可能性的基石。作为计算机编程的经典之选,C语言无疑是每个刚刚踏入编程领域的初学者的理想起点。本篇博客将带您踏上一段奇妙的C语言学习之旅,不仅会教您编写代码,更会启发您深入思考计算机科学的精髓。

C语言简介

C语言是一门古老而强大的编程语言,诞生于20世纪70年代初由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发而成,C语言一经问世,立即在计算机科学领域引起轰动。其简洁、灵活和高效的特性,使其成为了许多编程任务的首选语言。

C语言既具备高级编程语言的抽象特性,又直接暴露了底层的计算机硬件操作。这种特性使得C语言不仅适用于应用程序的开发,还可用于系统级编程和嵌入式系统的构建。实际上,许多操作系统和编译器本身就是用C语言编写的。🌟

C语言的语法简洁而灵活允许程序员进行精细的控制和优化。它提供了丰富的数据类型,包括整数、浮点数、字符等,以及数组、结构体和指针等数据结构,使得程序员可以更好地管理和组织数据。此外,C语言也支持低级的内存操作,使得程序员可以直接操作计算机内存,从而实现高效的算法和数据结构。💡

尽管C语言在很多方面表现出色,但它也需要程序员自己负责管理内存,这可能会导致一些错误和挑战。然而,正是这些挑战培养了程序员的深刻理解和技能,使他们能够编写更加健壮和高性能的程序。

一、Hello World!

在学习任何编程语言时,第一个示例程序通常是经典的"Hello, World!"。它是一个简单的程序,可以帮助你了解基本的语法和程序结构。让我们一起来编写你的第一个C语言程序吧!

1.1 编写代码

打开你选择的集成开发环境(IDE)或者文本编辑器,创建一个新的源代码文件,文件名可以是hello.c。然后在文件中输入以下代码:

#include <stdio.h>int main() {printf("Hello, World!\n");return 0;
}

1.2 代码解释

#include <stdio.h>

这是一个预处理指令。预处理器会在编译代码之前执行,它告诉编译器引入了名为stdio.h标准输入输出库。这个库包含了用于处理输入输出的函数,如printf

int main() {

这是C语言程序的入口点。所有C程序都必须包含一个名为main的函数,它是程序的起始执行点int表示main函数将返回一个整数值。

    printf("Hello, World!\n");

这行代码使用**printf函数打印文本到控制台。printf是C语言中用于格式化输出的函数**。括号内的内容是你要输出的文本,\n表示换行

    return 0;
}

return语句用于指定函数的返回值。main函数中通常使用return 0;表示程序执行成功。其他非零值可能表示程序遇到了错误。

要理解代码的执行过程,你可以将程序想象成一系列的步骤:

  1. 预处理器会处理**#include <stdio.h>,并将stdio.h**中的内容添加到程序中,以便在程序中使用标准输入输出函数。
  2. 当程序开始执行时,它会跳转main函数。main函数是程序的起始点
  3. 在**main函数中,printf("Hello, World!\n");**语句会执行。printf函数会将指定的文本打印到控制台。
  4. return 0;表示main函数执行成功,并返回整数值0,这表示程序正常终止
  5. 整个程序执行完毕,控制台会显示出你的"Hello, World!"消息。

1.3 编译和运行

保存文件后,你可以使用IDE中的编译和运行按钮,或者通过命令行运行以下命令来编译和运行程序:

gcc -o hello hello.c
./hello

第一条命令使用GCC编译器将hello.c源文件编译为可执行文件hello。第二条命令运行生成的可执行文件。

1.4 结果

如果一切顺利,你应该能够在控制台看到输出:

Hello, World!

恭喜你,你已经成功编写并运行了你的第一个C语言程序!"Hello, World!"程序可能非常简单,但它为你提供了学习C语言的一个良好起点。在接下来的学习中,你将逐步了解更多复杂的语法和概念。

二、数据类型

当你开始学习编程语言时,了解数据类型至关重要,因为数据类型定义了变量可以存储的数据种类和范围。在C语言中,有多种基本数据类型,每种类型在内存中占据不同的空间并具有不同的取值范围。以下是一些常见的C语言数据类型的简介:

2.1 基本数据类型

  • 整数类型:用于存储整数值,分为有符号和无符号两种。有符号整数可以表示正数、负数和零,而无符号整数只能表示非负数(正数和零)。常见整数类型有:
    • int:常规整数,根据平台占用不同字节
    • short:短整数,占用较少字节。
    • long:长整数,占用较多字节。
    • unsigned intunsigned shortunsigned long:无符号整数。
  • 浮点类型:用于存储小数或实数值,包括单精度和双精度。常见浮点类型有:
    • float:单精度浮点数,占用4字节。
    • double:双精度浮点数,占用8字节。
  • 字符类型:用于存储单个字符,通常使用char数据类型。

2.2 复合数据类型

  • 数组:由相同类型的元素组成的集合,通过索引访问。例如:int scores[5]; 定义一个包含5个整数的数组。
  • 联合体(Union):类似结构体,但成员共享相同内存,只能存储一个成员的值,节省内存。
  • 结构体:将不同类型的数据组合成自定义的复合数据类型。例如:
struct Student {char name[50];int age;float gpa;
};

2.3 指针类型

指针:存储变量内存地址,使你能直接访问内存中的数据。指针类型变量可指向特定数据类型。例如:int *ptr; 定义指向整数的指针。

2.4 枚举类型

枚举:定义用户自定义数据类型,限制变量可能取值范围。例如:

enum Day {MONDAY,TUESDAY,WEDNESDAY,// ...
};

掌握各种数据类型将帮助你更好地管理数据,有效地创建变量,并确保程序正确性和性能。在C语言中,选择适当的数据类型对于正确使用变量、执行算术运算以及在程序中传递参数至关重要。

三、C语言基础

3.1 变量和常量

  • 变量:在程序中用于存储数据的容器,需要声明并指定其数据类型。
int num;
  • 常量:值不可更改的变量,在声明时必须初始化,可以使用const关键字来声明常量。
const double pi = 3.14159;

3.2 运算符

  • 算术运算符:用于执行基本算术操作,如加法、减法、乘法和除法。
int sum = 10 + 5;
  • 赋值运算符:用于给变量赋值,将右边的值赋给左边的变量。
int x = 5;
  • 比较运算符:用于比较两个值,返回布尔值(真或假)。
if (x > 0) {// ...
}
  • 逻辑运算符:用于组合和操作布尔值,如与、或和非。
if (x > 0 && y < 10) {// ...
}

3.3 控制流语句

  • 条件语句(if-else):根据条件的真假来执行不同的代码块。
if (score >= 60) {printf("Pass\n");
} else {printf("Fail\n");
}
  • 循环语句:重复执行一段代码,有三种主要类型:forwhiledo-while
for (int i = 0; i < 5; i++) {printf("%d\n", i);
}

3.4 注释

单行注释

单行注释用于在一行代码后添加说明。它从//开始,一直到该行的末尾。编译器会忽略这些注释,不会将其包含在生成的可执行文件中。

int age = 25;  // 声明并初始化年龄变量

多行注释

多行注释用于跨越多行代码的解释。它从/\*开始,到\*/结束。多行注释可以包含多行文本,并且可以用于注释掉一整段代码。

在这里插入图片描述

注释的作用

  • 解释代码:注释可以提供代码的解释和上下文,帮助其他人理解你的代码。这对于团队协作和代码维护非常重要。
  • 记笔记:你可以使用注释来记录你的想法、思路以及需要后续处理的问题。这有助于你在以后的开发中快速回顾和处理。
  • 调试:在调试时,你可以使用注释来排除一些代码,以确定问题是否出现在特定部分。
  • 临时更改:如果你想临时禁用某些代码,你可以使用注释来实现,而无需实际删除这些代码。

四、 函数

函数是C语言中的基本构建块之一,它们允许你将一段代码封装为可重用的模块,并通过调用函数来执行特定任务。使用函数可以使你的代码更加模块化、结构化和易于维护。以下是关于函数的一些重要概念:

4.1 函数的声明和定义

在使用函数之前,需要先声明它。函数声明告诉编译器有一个函数存在,但不提供函数的具体实现。函数定义提供了函数的实际代码。例如:

// 函数声明
int add(int a, int b);// 函数定义
int add(int a, int b) {return a + b;
}

4.2 函数的参数和返回值

函数可以接受参数,执行特定的操作,然后返回一个值。参数是传递给函数的输入值,而返回值是函数执行后的输出结果。

int square(int x) {return x * x;
}

4.3 函数的调用

通过函数名和传递的参数调用函数。调用函数会执行函数的代码,并将返回值返回给调用处。

int result = square(5); // 调用square函数,计算5的平方

4.4 主函数(main函数)

每个C程序都必须包含一个名为main的函数。程序从main函数开始执行,当main函数执行完毕时,程序终止。

int main() {// 主函数的代码return 0;
}

4.5 内置函数和自定义函数

C语言提供了许多内置函数,如数学函数、字符串处理函数等。此外,你也可以创建自己的函数来执行特定任务。

五、 数组和字符串

在C语言中,数组和字符串是常用的数据结构,用于存储一组相关的数据。数组是相同类型元素的有序集合,而字符串是字符数组的特殊形式。以下是关于数组和字符串的重要内容:

5.1 数组的声明和初始化

数组的声明需要指定元素的数据类型和元素数量。可以通过下标(索引)访问数组中的元素。

int scores[5]; // 声明一个包含5个整数的数组
scores[0] = 85; // 为数组元素赋值

也可以在声明时进行初始化:

int numbers[3] = {10, 20, 30}; // 声明并初始化一个包含3个整数的数组

5.2 多维数组

多维数组是数组的扩展,可以是二维、三维或更多维度的数组。它们通常用于表示矩阵、表格等数据结构。

int matrix[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}
};

5.3 字符串

字符串是字符的数组,以null终止字符(‘\0’)作为字符串的结尾。

char greeting[] = "Hello, world!";

5.4 字符串处理函数

C语言提供了许多字符串处理函数,用于处理字符串的操作,如连接、比较、复制等。

#include <string.h>char source[] = "Hello";
char destination[10];strcpy(destination, source); // 复制source到destination

5.5 字符串输入和输出

使用scanf函数从用户输入中读取字符串,使用printf函数将字符串输出到控制台。

char name[50];
printf("请输入你的名字:");
scanf("%s", name);
printf("你好,%s!\n", name);

数组和字符串是C语言中用于存储和操作数据的重要工具。它们在各种编程场景中都得到广泛应用,从简单的存储数据到处理复杂的文本信息。理解数组和字符串的特性和使用方法将有助于你更高效地编写程序。

六、 指针和内存管理

在C语言中,指针是一个重要的概念,它允许你直接访问内存中的数据,并提供了更高级的内存管理能力。以下是关于指针和内存管理的重要内容:

6.1 指针的概念

指针是存储内存地址的变量。通过指针,你可以直接访问存储在内存中的数据。

int num = 42;
int *ptr;       // 定义一个指向整数的指针
ptr = &num;     // 将指针指向num的地址

6.2 指针的运算

指针可以进行加法和减法运算,以访问相邻内存单元的数据。

int numbers[5] = {10, 20, 30, 40, 50};
int *ptr = numbers; // 将指针指向数组的第一个元素int thirdValue = *(ptr + 2); // 访问数组的第三个元素,即30

6.3 动态内存分配

C语言允许你在运行时动态分配内存,这样你可以根据需要分配和释放内存。

int *dynamicArray = malloc(5 * sizeof(int)); // 分配一个包含5个整数的动态数组// 使用dynamicArrayfree(dynamicArray); // 释放分配的内存

6.4 指针和数组的关系

数组名实际上是指向数组第一个元素的指针。因此,可以使用指针来访问数组元素。

int numbers[3] = {10, 20, 30};
int *ptr = numbers;int firstValue = *ptr; // 数组的第一个元素,即10
int secondValue = *(ptr + 1); // 数组的第二个元素,即20

指针和内存管理是C语言的核心概念之一,了解它们将帮助你更好地理解内存的工作方式,提高代码的灵活性,并避免内存泄漏等问题。指针的使用虽然强大,但也需要小心谨慎,以避免出现错误。

七、文件操作和输入/输出

在C语言中,文件操作和输入/输出(I/O)是处理外部数据的关键部分。通过文件操作,你可以读取和写入文件,而输入/输出允许你与用户交互并处理文本。

7.1 文件操作

C语言中的文件操作涉及打开、读取、写入和关闭文件。你可以使用标准库函数来执行这些操作。

#include <stdio.h>int main() {FILE *filePointer;char data[100];filePointer = fopen("file.txt", "r"); // 打开文件以读取数据if (filePointer == NULL) {printf("无法打开文件\n");return 1;}fgets(data, 100, filePointer); // 从文件读取一行数据printf("%s", data);fclose(filePointer); // 关闭文件return 0;
}

7.2 格式化输入/输出

使用printfscanf函数,你可以格式化地输出数据到屏幕和从用户处输入数据。

#include <stdio.h>int main() {int age;printf("请输入你的年龄:");scanf("%d", &age);printf("你的年龄是:%d\n", age);return 0;
}

7.3 标准输入/输出

C语言中有三个标准的I/O流:stdin(标准输入)、stdout(标准输出)和stderr(标准错误输出)。

#include <stdio.h>int main() {fprintf(stdout, "这是标准输出\n");fprintf(stderr, "这是标准错误输出\n");return 0;
}

文件操作和输入/输出是C语言中处理外部数据的重要组成部分。它们使你能够读取和写入文件,与用户交互,并将程序的结果输出到屏幕上。掌握文件操作和I/O将使你能够创建更丰富的应用程序,能够与外部数据进行有效交互。

八、错误处理和调试

在编程过程中,错误是不可避免的。C语言提供了一些机制来处理错误并进行调试,以确保程序的正确性和稳定性。

8.1 错误代码

C语言中,通常使用返回值来指示函数是否执行成功,以及在错误发生时提供额外的信息。标准库函数通常会返回特定的错误代码。

#include <stdio.h>int main() {FILE *filePointer;filePointer = fopen("nonexistent_file.txt", "r");if (filePointer == NULL) {perror("无法打开文件");return 1;}fclose(filePointer);return 0;
}

8.2 断言

断言是在代码中添加的条件检查,用于确保程序在满足某些条件时继续执行。如果断言条件不满足,程序将中止并显示错误消息。

#include <assert.h>int main() {int x = 5;assert(x > 10); // 如果x不大于10,程序将中止return 0;
}

8.3 调试器

调试器是一种工具,用于追踪程序的执行过程并检查变量的值。在C语言中,你可以使用调试器来识别和修复错误。

8.4 日志和打印调试信息

在程序中添加打印语句或日志,可以帮助你追踪程序的执行,以及查找问题所在。

#include <stdio.h>int main() {int x = 42;printf("x的值:%d\n", x); // 打印调试信息return 0;
}

错误处理和调试是开发过程中必不可少的一部分。通过使用适当的错误处理机制和调试工具,你可以更轻松地识别和解决问题,确保程序的正确性和稳定性。

结语

通过这篇博客,我们深入了解了C语言的基础知识。从数据类型和变量到控制流语句,再到函数、数组、指针,以及文件操作和调试技巧,我们探索了C语言的核心概念和关键特性。C语言作为一门古老而强大的编程语言,为我们提供了处理底层细节和开发高效程序的工具。

虽然C语言可能对初学者来说有一些挑战,但通过不断的学习、练习和实践,你将逐渐掌握这门语言,并能够编写出高效、健壮的程序。无论是为了系统编程、嵌入式开发、还是学术研究,C语言都是一个极具价值的工具。

希望这篇博客能够帮助你在C语言的学习之旅中起到一些指引作用。在掌握了这些基础后,你可以继续深入学习更高级的主题,探索更多C语言的应用领域。祝愿你在编程的道路上取得巨大的成功!

如果你有任何问题或需要进一步的帮助,欢迎随时与我交流。继续努力,愿你在编程世界中探索无限可能!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/51354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【项目 计网6】 4.17 TCP三次握手 4.18滑动窗口 4.19TCP四次挥手

文章目录 4.17 TCP三次握手4.18滑动窗口4.19TCP四次挥手 4.17 TCP三次握手 TCP 是一种面向连接的单播协议&#xff0c;在发送数据前&#xff0c;通信双方必须在彼此间建立一条连接。所谓的“连接”&#xff0c;其实是客户端和服务器的内存里保存的一份关于对方的信息&#xff…

线性代数的学习和整理7:各种特殊效果矩阵汇总

目录 1 矩阵 1.1 1维的矩阵 1.2 2维的矩阵 1.3 没有3维的矩阵---3维的是3阶张量 1.4 下面本文总结的都是各种特殊效果矩阵特例 2 方阵: 正方形矩阵 3 单位矩阵 3.1 单位矩阵的定义 3.2 单位矩阵的特性 3.3 为什么单位矩阵I是 [1,0;0,1] 而不是[0,1;1,0] 或[1,1;1,1]…

vue若依导出word文件,简单的实现

首先前端导包,注意exportDocx的导包位置要修改成你自己的 import {exportDocx} from /utils/docUtil/docutil.js; import {addDays} from date-fns; import {listGongyi} from "/api/system/detail";然后新建一个测试按钮 <el-col :span"1.5"><…

守护进程(精灵进程)

目录 前言 1.如何理解前台进程和后台进程 2.守护进程的概念 3.为什么会存在守护进程 4.如何实现守护进程 5.测试 总结 前言 今天我们要介绍的是关于守护进程如何实现&#xff0c;可能有小伙伴第一次听到守护进程这个概念&#xff0c;感觉很懵&#xff0c;知道进程的概念&…

17.3 【Linux】systemctl 针对 service 类型的配置文件

17.3.1 systemctl 配置文件相关目录简介 服务的管理是通过 systemd&#xff0c;而 systemd 的配置文件大部分放置于/usr/lib/systemd/system/ 目录内。但是 Red Hat 官方文件指出&#xff0c; 该目录的文件主要是原本软件所提供的设置&#xff0c;建议不要修改&#xff01;而要…

C++信息学奥赛1138:将字符串中的小写字母转换成大写字母

#include<bits/stdc.h> using namespace std; int main() {string arr;// 输入一行字符串getline(cin, arr);for(int i0;i<arr.length();i){if(arr[i]>97 and arr[i]<122){char aarr[i]-32; // 将小写字母转换为大写字母cout<<a; // 输出转换后的字符}els…

linux+c+qt杂记

虚拟机网络选择&#xff1b; 桥接模式&#xff1a;设置window宿主机的IP/dns,把虚拟机设置为桥接即可。 切换到终端&#xff1a;我的是 ctrlaltFnF1&#xff1f; 问题解决&#xff1a; Ubuntu系统下载&#xff08;清华大学开源软件镜像站&#xff09;&#xff08;ubuntu-20.…

使用代理突破浏览器IP限制

一、实验目的: 主要时了解代理服务器的概念&#xff0c;同时如何突破浏览器IP限制 二、预备知识&#xff1a; 代理服务器英文全称是Proxy Server&#xff0c;其功能就是代理网络用户去取得网络信息。形象的说&#xff1a;它是网络信息的中转站&#xff0c;特别是它具有一个cac…

【Unity学习笔记】DOTween(1)基础介绍

本文中大部分内容学习来自DOTween官方文档 文章目录 什么是DOTween&#xff1f;DOSetOnTweenerSequenceTweenNested tween 初始化使用方式 什么是DOTween&#xff1f; DOTween是一个动画插件&#xff0c;Tween是补间的意思。这个插件以下简称DOT&#xff0c;DOT很方便使用&…

浅谈容器网络

1.什么是容器网络 容器网络是一种新兴的应用程序沙箱机制&#xff0c;用于家庭桌面和网络规模的 企业网络 解决方案&#xff0c;其概念与虚拟机类似。容器内部与主机和所有其他容器隔离的是一个功能齐全的 Linux 环境&#xff0c;具有自己的用户、文件系统、进程和网络堆栈。容…

汽车制造业外发文件时 如何阻断泄密风险?

汽车制造业是我国国民经济发展的支柱产业之一&#xff0c;具有产业链长、关联度高、就业面广、消费拉动大等特性。汽车制造行业景气度与宏观经济、居民收入水平和固定资产投资密切相关。 汽车制造业产业链长&#xff0c;关联度高&#xff0c;汽车制造上游行业主要为钢铁、化工…

https 的ssl证书过期处理解决方案(lighthttpd)

更换证书&#xff1a;lighthttpd 配置文件位置&#xff1a;/opt/vmware/etc/lighttpd/lighttpd.conf &#xff08;配置文件的最底部 G快速来到底部&#xff09; 方案一&#xff1a;阿里云申请免费的证书 这里公司内网环境没有配置域名&#xff0c;可以创建一个临时域名&…

IDEA启动Tomcat两个端口的方式 使用nginx进行反向代理 JMeter测试分布式情况下synchronized锁失效

目录 引出IDEA启动Tomcat两个端口的方式1.编辑配置2.添加新的端口-Dserver.port80833.service里面管理4.启动后进行测试 使用nginx进行反向代理反向代理多个端口运行日志查看启动关闭重启 分布式情况下synchronized失效synchronized锁代码启动tomcat两个端口nginx反向代理JMete…

uniapp 实现切换tab锚点定位到指定位置

1.主要使用uniapp scroll-view 组件的scroll-into-view属性实现功能 2.代码如下 <scroll-view:scroll-into-view"intoView"><u-tabsclass"tabs-list"change"tabChange":list"tabList"></u-tabs><view id"1&…

macOS - 安装 Python 及地址

文章目录 Python 官方安装包Pip3Applications - PythonMiniconda多个python环境有多种方式安装 python,比如 Python 官方包、anaconda、miniconda、brew 等 这里记录使用 Python 官方包进行安装,和 miniconda 安装方式,以及安装后 各执行文件、安装包的地址。 明确这些地址后…

Ceph入门到精通-大流量10GB/s LVS+OSPF 高性能架构

LVS 和 LVSkeepalived 这两种架构在平时听得多了&#xff0c;最近才接触到另外一个架构LVSOSPF。这个架构实际上是LVSKeepalived 的升级版本&#xff0c;我们所知道LVSKeepalived 架构是这样子的&#xff1a; 随着业务的扩展&#xff0c;我们可以对web服务器做水平扩展&#xf…

有线耳机插入电脑没声音

有线耳机插入电脑没声音 首先确保耳机和电脑都没问题&#xff0c;那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。

MySQL回表是什么?哪些情况下会回表

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责…

iview时间控件 动态不可选日期 可选择24小时范围内 时间往后退24小时

演示 html 设定 起始时间 触发on-change 方法结束时间 options 动态设置不可选择的日期。 <!-- 起始时间 --> <FormItem :label"$t(startTime)" prop"startTime"><DatePickertransfertype"datetime":placeholder"$t(pleas…

php 系列题目,包含查看后端源代码

一、弱类型比较问题 原则&#xff1a; 1.字符串和数字比较&#xff0c;字符串回被转换成数字。 "admin" 0&#xff08;true) admin被转换成数字&#xff0c;由于admin是字符串&#xff0c;转换失败&#xff0c;变成0 int(admin)0,所以比较结果是ture 2.混合字符串转…