当前位置: 首页 > news >正文

【C语言】关键字详解

【C语言】关键字详解


文章目录

    • @[TOC](文章目录)
  • 前言
  • 一、char
    • 1.定义字符串类型
    • 2.定义字符类型
  • 二、short
  • 三、int
  • 四、long
  • 五、signed
  • 六、unsigned
  • 七、float
  • 八、double
  • 九、struct、union、enum
  • 十、void
    • 1.void用于函数声明,没有返回值的函数,其类型为 void。
    • 2.void不能用来声明变量或常量
    • 3.void是没有返回值的,在void函数里面不能使用return来返回数据。
  • 十一、for
    • 1.省略变量初始化
    • 2.省略循环条件
    • 3.省略变量更新
    • 4.三个都省略
  • 十二、do while
  • 十三、while
  • 十四、break
  • 十五、continue
  • 十五、if else
  • 十六、goto
    • 1.goto从上到下
    • 2.goto从下到上
  • 十七、switch case default
  • 十八、return
  • 十九、auto
  • 二十、extern
  • 二十一、register
  • 二十二、static
  • 二十三、typedef
    • 1.对整形重命名
    • 2.对数组重命名
    • 3.对指针重命名
  • 二十四、const
  • 二十五、sizeof
    • 1.计算数据类型大小
    • 2.计算数组大小
  • 二十六、volatile
  • 二十七、参考资料
  • 总结

前言


提示:以下是本篇文章正文内容,下面案例可供参考
本文着重参考了这篇文章
C语言32个关键字详解

一、char

字符变量是用类型符char定义字符变量,char的主要作用就是声明字符型变量或函数。

char类型是个1字节,它的取值范围是[-128 , 127] (-2^7 — 2^7-1)。

1.定义字符串类型

#include <stdio.h>
int main()
{char c[]="Hello,World!";printf("%s\n",c);printf("%c\n",c[0]);printf("%c\n",c[1]);system("pause");return 0;
}

在这里插入图片描述

2.定义字符类型

#include <stdio.h>
int main()
{char c = 'a'; char a; printf("%d\n", c);  // 打印字符c的ASCII值printf("char的大小=%d\n", sizeof(a));  // 打印字符c的ASCII值system("pause");    // 在Windows系统上暂停程序,等待用户按键继续return 0;
}

在这里插入图片描述

在这里插入图片描述

二、short

类型名为 short int 或 short,声明短整型变量或函数。

short类型为2个字节,它的取值范围是[-32768 , 32767] (-2^15 — 2^15-1)。

#include <stdio.h>
int main()
{short n=4;short c;printf("%d\n",n);short m=40000;printf("%d\n",m);printf("short的大小%d\n",sizeof(c));system("pause");    // 在Windows系统上暂停程序,等待用户按键继续return 0;
}

在这里插入图片描述

三、int

int为基本整型,声明整型变量或函数 。

int类型为4个字节,它的取值范围是[-2147483648 , 2147483647] (-2^31 — 2^31-1)。

#include <stdio.h>
int main()
{int c = 4; int a;printf("c的值%d\n", c);  // 打印字符c的ASCII值printf("int的大小%d\n", sizeof(a));  // 打印字符c的ASCII值   system("pause");    // 在Windows系统上暂停程序,等待用户按键继续return 0;
}

在这里插入图片描述

四、long

1、长整型:long int

long int类型为4个字节。

它的取值范围是[-2147483648 , 2147483647] (-2^31 — 2^31-1)。

2、双长整型:long long int

long long int类型为8个字节。

它的取值范围是[-9223372036854775808 , 9223372036854775807] (-2^63 —
2^63-1)。

#include <stdio.h>
int main()
{long int c; long long int a; printf("long int=%d\n", sizeof(c));  // 打印字符c的ASCII值printf("long long int=%d\n", sizeof(a));  // 打印字符c的ASCII值system("pause");    // 在Windows系统上暂停程序,等待用户按键继续return 0;
}

在这里插入图片描述

五、signed

声明有符号类型变量或函数。
我们知道计算机只认识0和1,所以任何数据到1计算机的底层都会换成0,1,那负数怎么存储呢?肯定这个“-”号是无法存入内存的,怎么办?很好办,做个标记。把基本数据类型的最高位腾出来,用来存符号,同时约定如下:最高位如果是1,表明这个数是负数,其值为除最高位以外的剩余位的值添上这个“-”号;如果最高位是0,表明这个数是正数,其值为除最高位以外的剩余位的值。

六、unsigned

unsigned表示的是无符号数据类型,声明无符号类型变量或函数。

被unsigned修饰的变量,其取值范围一定是大于0的。

1、无符号整形 unsigned int 4字节 0 ~ 4294967295

2、无符号短整型 unsigned short int 2字节 0 ~ 65535

3、无符号长整形 unsigned long int 4字节 0 ~ 4294967295

4、无符号字符型 unsigned char 1字节 0 ~ 255

#include <stdio.h>
int main(){unsigned int a = -11;  unsigned char b = -129;printf("%u\n", a);printf("%u\n", b);return 0;
}

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

七、float

float类型也被叫做单精度浮点类型,声明浮点型变量或函数。

float类型为4个字节,它的数值取值范围为[-3.410^-38 ~ 3.410^38]

#include <stdio.h>
int main(){float n=3.14;float a;printf("%f\n", n);printf("float的大小=%d\n",sizeof(a));return 0;
}

在这里插入图片描述

八、double

double类型也被叫做双精度浮点类型,声明浮点型变量或函数。

double类型为8个字节,它的取值范围为[-1.710^-308 ~ 1.710^308]

#include <stdio.h>
int main(){double n=3.14;double a;printf("%lf\n", n);printf("double的大小=%d\n",sizeof(a));return 0;
}

在这里插入图片描述

补充内容:关于 %f 和 %lf 的使用

%f和%lf分别是float类型和double类型用于格式化输入输出时对应的格式符号。 其中: float,单精度浮点型,对应%f。
double,双精度浮点型,对应%lf。

在用于输出时: float类型可以使用%lf格式 double类型如果使用了%f格式可能会导致输出错误。

在用于输入时: double 类型使用了%f格式,会导致输入值错误。
float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。

九、struct、union、enum

【C语言】结构体、枚举、联合体

十、void

void类型修饰符(type specifier)表示“没有值可以获得”。因此,不可以采用这个类型声明变量或常量。

1.void用于函数声明,没有返回值的函数,其类型为 void。

#include <stdio.h>
void Add(int x,int y){printf("%d\n", x + y);
}
int main(){int gg = 11;int jj = 24;Add(gg,jj);return 0;
}

2.void不能用来声明变量或常量

3.void是没有返回值的,在void函数里面不能使用return来返回数据。

十一、for

for表示的是一个循环语句,可以控制一个循环,并且在每一次循环时修改循环变量。在循环语句中for应该是最为灵活的,不仅可以用于循环次数已经确定的情况,而且还可以用于循环次数不确定而只给出循环结束条件的情况。

1.省略变量初始化

#include <stdio.h>
int main(){int i = 0;  //在for循环外面对变量进行赋值for (; i < 10; i++){printf("%d ", i);}return 0;
}

在这里插入图片描述

2.省略循环条件

#include <stdio.h>
int main(){int i;  //在for循环外面对变量进行赋值for (i = 0; ; i++){printf("%d ", i);}return 0;
}

在这里插入图片描述

3.省略变量更新

#include <stdio.h>
int main(){int i;  //在for循环外面对变量进行赋值for (i = 0; i<10 ; ){printf("%d ", i);}return 0;
}

在这里插入图片描述

4.三个都省略

#include <stdio.h>
int main(){int i;  //在for循环外面对变量进行赋值for (;  ; ){printf("%d ", i);}return 0;
}

在这里插入图片描述

十二、do while

do…while是一个比较特殊的循环,因为在有些条件下,不论条件是否满足,循环过程必须至少执行一次。
注意:在使用do…while语句时,条件放在while关键字后面的括号中,最后必须加上一个分号。

#include <stdio.h>
int main(){int n = 1;int sum = 0;do{sum += n;n++;   //这里我们让n进行自加} while (n <= 1);printf("%d\n", sum); //用sum来计算总和return 0;
}

在这里插入图片描述

十三、while

while循环语句首先检查一个条件,也就是括号中的表达式。当条件为真时,就执行紧跟其后的语句或者语句块。每执行一遍程序,都将回到while语句处,重新检验条件是否满足。如果一开始就不满足,则跳过循环体中的语句,直接执行后面程序代码。如果第一次检验时满足,那么在第一次或其后的循环过程中,必须得有使条件为假的操作,否则循环将无法终止。

#include <stdio.h>
int main(){int n = 1;int  sum = 0;while (n <= 1){sum += n;n++;}printf("%d\n", sum); //计算总和return 0;
}

在这里插入图片描述

十四、break

break语句终止并跳出循环,继续执行后面的代码。

#include <stdio.h>
int main(){while (1){printf("blue");	break;    //直接结束循环,就不会进入死循环}return 0;
}

在这里插入图片描述

十五、continue

在某些情况下,程序需要返回到循环头部继续执行,而不是像break那样跳出循环。

continue的主要作用就是结束本次循环。就是跳过循环体中尚未执行的部分,直接执行下一次循环的操作。
注意:continue语句和break语句的区别:continue语句只能结束本次循环,而不是终止整个循环的执行;break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

在这里插入图片描述

十五、if else

if…else语句。在if后的括号中判断表达式的结果,如果判断的结果为真,则执行紧跟if后语句块中的内容;如果判断的结果为假,则执行else语句后的语句块内容。也就是说,当if语句检验的条件为假时,就执行相应的else语句后面的语句或者语句块

在这里插入图片描述

十六、goto

goto语句为无条件转移语句,可以使程序立即跳转到函数内部任意一条可执行语句。goto关键字后面带一个标点符,该标点符是同一个函数中某条语句的符号。符号可以出现在任何可执行语句前面,并且以一个冒号“:”作为后缀

1.goto从上到下

#include <stdio.h>
int main(){
goto end;printf("1\n");printf("2\n");printf("3\n");printf("4\n");
end:printf("5\n");printf("6\n");printf("7\n");return 0;
}

在这里插入图片描述

2.goto从下到上

#include <stdio.h>
int main(){             //这个代码会进入一个死循环printf("1\n");      //到了goto永远往上执行,不会停止printf("2\n");printf("3\n");printf("4\n");
end:  printf("5\n");
goto end;printf("6\n");printf("7\n");return 0;   
}

在这里插入图片描述

十七、switch case default

switch语句是多分支选择语句。
if语句只有两个分支供选择,而在实际问题中常需要用到多分支选择。在c语言中可以用switch语句直接处理多分支选择情况,将程序的代码可读性提高。

switch后面括号中的表达式就是要进行判断的条件。在switch语句块中,使用case关键字表示检验条件符合的各种情况,其后的语句是相应的操作。其中还有一个default关键字,作用是如果没有符合条件的情况,那么执行default后面默认的情况语句。

#include <stdio.h>
int main(){int day;printf("请输入1-7:");scanf("%d", &day);switch (day){case 1:printf("星期一\n");//	break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期天\n");break;default:printf("你输入的有误!\n");break;}return 0;
}

在这里插入图片描述

十八、return

return 0 代表程序正常退出,return 1代表程序异常退出。

使用return语句可以返回一个变量内的值或一个指针,也可用return0,表示返回为空。

return 代表调到函数外。

return 0代表函数正常终止。return 1代表函数非正常终止。

return 关键字的作用是返回程序流程的控制权。其副作用是返回一个值。

十九、auto

auto:在缺省情况下,编译器默认所有的变量都是auto的,所以autu关键字可以省略。

auto关键字用于定义一个局部变量为自动的,这意味着每次执行到定义该变量时,都会产生一个新的变量,并且对其重新初始化。声明自动变量,一般不使用

二十、extern

extern变量称为外部存储变量。extern声明了程序中将要用到但尚未定义的外部变量。通常外部储存都用于声明在另一个转换单元中定义的变量。
一个工程是由多个c文件组成的。这些源代码文件会分别进行编译,然后链接成一个可执行的模块。把这样的一个程序作为一个工程进行管理,并且生成一个工程文件来记录所有包含源代码文件。

二十一、register

register:这个关键字请求编译器尽可能地将变量存在CPU内部寄存器中,而不是通过内存寻址访问以提高效率。注意是尽可能,不是绝对。可以想象,一个CPU的寄存器数量有限,也就那么几个或几十个,如果用户定义了很多很多register变量,那么即便把CPU“累死”也不可能全部把这些变量放人寄存器,可能轮也轮不到你。

二十二、static

【C语言】static关键字修饰局部变量、全局变量、函数

二十三、typedef

typedef关键字用以给数据类型取别名(但是该关键字被分到存储关键字分类中,虽然看起来没什么相关性)。

typedef其实就是一个含义:类型重命名

  1. 对一般类型进行重命名 。

  2. 对结构体类型进行重命名 。

  3. 对指针进行重命名 。

  4. 对复杂结构进行重命名。

1.对整形重命名

2.对数组重命名

3.对指针重命名

二十四、const

二十五、sizeof

siezof的主要作用就是计算数据类型长度

1.计算数据类型大小

#include<stdio.h>
int main(){printf("%d\n",sizeof(char));printf("%d\n",sizeof(short));printf("%d\n",sizeof(int));printf("%d\n",sizeof(float));printf("%d\n",sizeof(double));return 0;
}

在这里插入图片描述

2.计算数组大小

#include <stdio.h>
int main(){int jj[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//int为4个字节//我们定义了10个数//所以10*4=40个字节printf("%d\n", sizeof(jj));//40//下面我们求的是数组的空间大小printf("%d\n", sizeof(jj)/sizeof(jj[0]));//10return 0;
}

在这里插入图片描述

二十六、volatile

volatile关键字和const一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其他线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问

二十七、参考资料

C语言实现窗体程序,DevC++ 窗体应用
Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.zip
Dev C++下载安装和使用教程(新手必看)
static和const的作用与区别

总结

本文仅仅简单介绍了【C语言】关键字详解,评论区欢迎讨论。

相关文章:

【C语言】关键字详解

【C语言】关键字详解 文章目录 [TOC](文章目录) 前言一、char1.定义字符串类型2.定义字符类型 二、short三、int四、long五、signed六、unsigned七、float八、double九、struct、union、enum十、void1.void用于函数声明&#xff0c;没有返回值的函数&#xff0c;其类型为 void。…...

什么是计算机网络

什么是计算机网络&#xff1f; 计算机网络的定义计算机网络的分类按覆盖范围分类按拓扑结构分类按通信传输介质分类按信号频带占用方式分类 计算机网络的功能信息交换资源共享分布式处理 计算机网络的组成计算机网络的定义计算机网络的分类按覆盖范围分类按拓扑结构分类按通信传…...

【大数据学习 | Spark-Core】Spark的分区器(HashPartitioner和RangePartitioner)

之前学过的kv类型上面的算子 groupby groupByKey reduceBykey sortBy sortByKey join[cogroup left inner right] shuffle的 mapValues keys values flatMapValues 普通算子&#xff0c;管道形式的算子 shuffle的过程是因为数据产生了打乱重分&#xff0c;分组、排序、join等…...

CSS3_BFC(十二)

BFC MDN对BFC的解释&#xff1a;块格式化上下文&#xff08;Block Formating Context, BFC&#xff09;是web页面的可视CSS渲染的一部分&#xff0c;是块盒子的布局过程发生的区域&#xff0c;也是浮动元素与其他元素交互的区域。 1、开启BFC flow-root对内容的影响是最低的&am…...

C0032.在Clion中使用MSVC编译器编译opencv的配置方法

使用MSVC编译器编译opencv的配置方法...

微信小程序中会议列表页面的前后端实现

题外话&#xff1a;想通过集成腾讯IM来解决即时聊天的问题&#xff0c;如果含语音视频&#xff0c;腾讯组件一年5万起步&#xff0c;贵了&#xff01;后面我们改为自己实现这个功能&#xff0c;这里只是个总结而已。 图文会诊需求 首先是个图文列表界面 同个界面可以查看具体…...

WEB攻防-通用漏洞文件上传二次渲染.htaccess变异免杀

知识点&#xff1a; 1、文件上传-二次渲染 2、文件上传-简单免杀变异 3、文件上传-.htaccess妙用 4、文件上传-PHP语言特性 1、上传后门时&#xff0c;文件内容带.就不行 这时可以上传一个转换后的ip地址&#xff0c;ip地址对应网站包含后门代码 转换后的int会在访问的时候…...

vue实现列表滑动下拉加载数据

一、实现效果 二、实现思路 使用滚动事件监听器来检测用户是否滚动到底部&#xff0c;然后加载更多数据 监听滚动事件。检测用户是否滚动到底部。加载更多数据。 三、案例代码 <div class"drawer-content"><div ref"loadMoreTrigger" class&q…...

全面解析:HTML页面的加载全过程(四)--浏览器渲染之样式计算

主线程遍历得到的 DOM 树&#xff0c;依次为树中的每个节点计算出它最终的样式&#xff0c;称之为 Computed Style。 通过前面生成的DOM 树和 CSSOM 树&#xff0c;遍历 DOM 树&#xff0c;为每一个 DOM 节点&#xff0c;计算它的所有 CSS 属性&#xff0c;最后会得到一棵带有…...

#Verilog HDL# 谈谈代码中如何跨层次引用

目录 一 先谈作用问题 二 再谈跨层次问题 2.1 向下引用 2.2 向上引用 一 先谈作用问题 大多数编程语言都有一个称为作用域(scope)的特征,它定义了代码的某些部分对于变量和方法的可见性。作用域定义了一个命名空间,以避免同一命名空间内不同对象名称之间的冲突。 V…...

LeetCode 每日一题 2024/11/18-2024/11/24

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 11/18 661. 图片平滑器11/19 3243. 新增道路查询后的最短距离 I11/20 3244. 新增道路查询后的最短距离 II11/21 3248. 矩阵中的蛇11/22 3233. 统计不是特殊数字的数字数量1…...

客户流失分析综述

引言 客户流失这个术语通常用来描述在特定时间或合同期内停止与公司进行业务往来的客户倾向性[1]。传统上&#xff0c;关于客户流失的研究始于客户关系管理&#xff08;CRM&#xff09;[2]。在运营服务时&#xff0c;防止客户流失至关重要。过去&#xff0c;客户获取相对于流失…...

基于51单片机的红包抽奖proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1nYZlLb64kdZAWSydT_uHfA 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…...

cangjie (仓颉) vscode环境搭建

sdk下载 下载中心-仓颉编程语言官网 可选择半年更新版&#xff0c;不用申请。目前版本&#xff1a;0.53.13 &#xff0c;选择不同平台压缩包下载解压到任意位置即可 补充下载&#xff0c;vscode插件解压后&#xff0c;在vscode扩展中选择从vsix安装&#xff0c;安装后新增名为…...

阿里云私服地址

1.解压apache-maven-3.6.1-bin 2.配置本地仓库&#xff1a;修改conf/dettings.xml中的<localReoisitory>为一个指定目录。56行 <localRepository>D:\apache-maven-3.6.1-bin\apache-maven-3.6.1\mvn_repo</localRepository> 3.配置阿里云私服&#xff1a;…...

HTMLCSS:3D金字塔加载动画

效果演示 这段代码通过CSS3的3D变换和动画功能&#xff0c;创建了一个旋转的金字塔加载动画&#xff0c;每个侧面都有不同的颜色渐变&#xff0c;底部还有一个模糊的阴影效果&#xff0c;增加了视觉的立体感。 HTML <div class"pyramid-loader"><div cl…...

shell编程(2)(3)

目录 一、永久环境变量 按用户设置永久环境变量 文件路径&#xff1a; 示例步骤&#xff1a; 删除永久环境变量 二、脚本程序传递参数怎么实现 三、用编程进行数学运算 shell中利用expr进行运算 运算与变量结合 1. 变量赋值和基本运算 2. 使用expr进行运算 3. 变量…...

DFT专家分析scan insertion时使用EDT的策略

作为一名芯片设计DFT工程师专家&#xff0c;在做scan insertion&#xff08;扫描插入&#xff09;时使用EDT&#xff08;Embedded Deterministic Test&#xff0c;嵌入式确定性测试&#xff09;的参数配置策略&#xff0c;需要综合考虑多个方面的因素&#xff0c;以确保测试的高…...

Apple Vision Pro开发003-PolySpatial2.0新建项目

unity6.0下载链接:Unity 实时开发平台 | 3D、2D、VR 和 AR 引擎 一、新建项目 二、导入开发包 com.unity.polyspatial.visionos 输入版本号 2.0.4 com.unity.polyspatial&#xff08;单独导入&#xff09;&#xff0c;或者直接安装 三、对应设置 其他的操作与之前的版本相同…...

分公司如何纳税

分公司不进行纳税由总公司汇总纳税“子公司具有法人资格&#xff0c;依法独立承担民事责任;分公司不具有法人资格&#xff0c;其民事责任由公司承担。”企业设立分支机构&#xff0c;使其不具有法人资格&#xff0c;且不实行独立核算&#xff0c;则可由总公司汇总缴纳企业所得税…...

在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager)

在 Ubuntu 系统上安装 npm 环境以及 nvm&#xff08;Node Version Manager&#xff09; 步骤 1: 更新系统包步骤 2: 安装 nvm步骤 3: 安装 Node.js 和 npm步骤 4: 设置默认 Node.js 版本&#xff08;可选&#xff09;总结 在 Ubuntu 系统上安装 npm 环境以及 nvm&#xff08;No…...

深度优先搜索(dfs)题目合集

深度优先搜索&#xff08;dfs&#xff09;题目合集 全排列问题 dfs原理和模版深度优先搜索原理&#xff08;纯个人理解&#xff09;参考程序dfs通用模版 素数环组合的输出 剪枝新dfs模版参考程序新的dfs模版 自然数的拆分 利用形参进行回溯 全排列问题 dfs原理和模版 P1706 全…...

性能监控利器:Ubuntu 22.04 上的 Zabbix 安装与配置指南

简介 今天我们来聊聊如何在 Ubuntu 22.04 上安装和配置 Zabbix。我们会用到 PostgreSQL 作为数据库后端&#xff0c;Nginx 作为 Web 服务器&#xff0c;并用 Let’s Encrypt SSL 证书来保驾护航。 什么是 Zabbix&#xff1f; Zabbix 是一个开源的网络监控和管理解决方案&…...

性能测试的宏观分析:全面提升系统表现的关键

在当今快速发展的软件行业中&#xff0c;系统性能的优劣直接影响用户体验和业务成功。性能测试作为确保系统高效运行的重要环节&#xff0c;其方法和策略不断演进。其中&#xff0c;宏观分析作为一种全面评估系统性能的手段&#xff0c;日益受到关注。本文将深入探讨宏观分析在…...

ctfshow

1,web21 Basic认证采用Base64加密方式&#xff0c;Base64解码字符串发现是 用户名:密码 的格式进行Base64编码。 密码shark63 2,web22 用 子域名扫描器 扫出flag.ctf.show拿到flag&#xff0c;但这个域名已经没了所以就直接交的官方提供的flag。 3,web23 这段PHP代码是一个简单…...

【分享一个vue指令】鼠标放置提示指令v-tooltip

描述 自定义指令 v-tooltip mounted(el, binding)&#xff1a;当元素被挂载到DOM上时&#xff0c;这个钩子会被调用。 el 是指令绑定的元素&#xff0c;binding 包含了指令的值&#xff0c;即 binding.value&#xff0c;这里是 clickOutside 字符串。tooltip 变量用于存储创建…...

掌握 Spring 事务管理:深入理解 @Transactional 注解

在业务方法上使用Transactional开启声明式事务时&#xff0c;很有可能由于使用方式有误&#xff0c;导致事务没有生效。 环境准备 表结构 CREATE TABLE admin (id bigint(20) unsigned NOT NULL AUTO_INCREMENT,username varchar(255) DEFAULT NULL,password varchar(255) …...

字符三角形

字符三角形 C语言代码C语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给定一个字符&#xff0c;用它构造一个底边长5个字符&#xff0c;高3个字符的等腰字符三角形。 输入 输入只有一行&#xff0c; …...

【LLM】一文学会SPPO

博客昵称&#xff1a;沈小农学编程 作者简介&#xff1a;一名在读硕士&#xff0c;定期更新相关算法面试题&#xff0c;欢迎关注小弟&#xff01; PS&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟沈小农&#xff0c;希望我的文章能帮助到你。欢迎大家在…...

如何通过ChatGPT提高自己的编程水平

在编程学习的过程中&#xff0c;开发者往往会遇到各种各样的技术难题和学习瓶颈。传统的学习方法依赖书籍、教程、视频等&#xff0c;但随着技术的不断发展&#xff0c;AI助手的崛起为编程学习带来了全新的机遇。ChatGPT&#xff0c;作为一种强大的自然语言处理工具&#xff0c…...