自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 C语言(第三十七天)

上面示例中,表达式3 + 4 * 5 里面既有加法运算符( + ),又有乘法运算符( * )。优先级指的是,如果一个表达式包含多个运算符,哪个运算符应该优先执行。C语言的操作符有2个重要0属性:优先级、结合性,这两个属性决定了表达式求值的计算顺序。接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。整个表达式的结果是最后一个表达式的结果。的优先级高于加法,所以会先计算4 * 5 ,而不是先计算3 + 4。逗号表达式,就是用逗号隔开的多个表达式。[ ]的两个操作数是arr和9。

2023-09-06 23:39:32 272

原创 C语言(第三十六天)

练习:编写代码实现:求一个整数存储在内存中的二进制中1的个数。不能创建临时变量(第三个变量),实现两个数的交换。注:他们的操作数必须是整数。4. 位操作符:&、|、^

2023-08-31 23:06:54 332

原创 C语言(第三十五天)

警告⚠️:对于移位运算符,不要移动负数位,这个是标准未定义的。2. 算术右移:左边用原该值的符号位填充,右边丢弃。1. 逻辑右移:左边用0填充,右边丢弃。注:移位操作符的操作数只能是整数。移位规则:左边抛弃、右边补0。

2023-08-29 23:37:14 264

原创 C语言(第三十四天)

16进制的数字每一位是0~9,a ~f 的,0~9,a ~f的数字,各自写成2进制,最多有4个2进制位就足够了,比如 f 的二进制是1111,所以在2进制转16进制数的时候,从2进制序列中右边低位开始向左每4个2进制位会换算一个16进制位,剩余不够4个二进制位的直接换算。8进制的数字每一位是0~7的,0~7的数字,各自写成2进制,最多有3个2进制位就足够了,比如7的二进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算一个8进制位,剩余不够3个2进制位的直接换算。

2023-08-28 23:26:49 412

原创 C语言(第三十三天)

函数不返回,函数对应的栈帧空间就一直占用,所以如果函数调用中存在递归调用的话,每一次递归函数调用都会开辟属于自己的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。其实递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中会有重复计算,而且递归层次越深,冗余计算就会越多。当我们n输入为50的时候,需要很长时间才能算出结果,这个计算所花费的时间,是我们很难接受的,这也说明递归的写法是非常低效的,那是为什么呢?这个题目,放在我们面前,首先想到的是,怎么得到这个数的每一位呢?

2023-08-27 23:35:50 241

原创 C语言(第三十二天)

那我们就可以写出函数Fact求n的阶乘,假设Fact(n)就是求n的阶乘,那么Fact(n-1)就是求n-1的阶。再稍微分析一下,当n<=1 的时候,n的阶乘是1,其余n的阶乘都是可以通过上述公式计算。上述就是一个简单的递归程序,只不过上面的递归只是为了演示递归的基本形式,不是为了解决问。这样的思路就是把一个较大的问题,转换为一个与原问题相似,但规模较小的问题来求解的。递归中的递就是递推的意思,归就是回归的意思,接下来慢慢来体会.计算n的阶乘(不考虑溢出),n的阶乘就是1~n的数字累积相乘。

2023-08-27 00:28:20 2186 1

原创 C语言(第三十一天)

这里确实是巧合,在不同的编译器下可能中间的空出的空间大小是不一样的,代码中这些变量内存的分配和地址分配是编译器指定的,所以的不同的编译器之间就有差异了。编译型错误一般都是语法错误,这类错误一般看错误信息就能找到一些蛛丝马迹的,双击错误信息也能初步的跳转到代码错误的地方。调试是需要反复去动手练习的,调试是可以增加程序员对代码的理解和掌控的,掌握了调试的能力,就能看到本质,就像能给程序做B超一样,对程序内部一览无余。运行时错误,是千变万化的,需要借助调试,逐步定位问题,调试解决的是运行时问题。

2023-08-25 22:35:40 487

原创 C语言(第三十天)

当程序员写完代码,测试再对程序进行测试,直到程序员的质量符合交付给用户使用的标准,这个时候就会设置为release,编译产生的就是release版本的可执行程序,这个版本是用户使用的,无需包含调试信息等。release版本和debug版本的对比。程序员在写代码的时候,需要经常性的调试代码,就将这里设置为debug,这样编译产生的是debug版本的可执行程序,其中包含调试信息,是可以直接调试的。试,也可能是隔离和屏蔽代码的方式,找到问题所的位置,然后确定错误产生的原因,再修复代码,重新测试。

2023-08-24 23:32:19 1148

原创 C语言(第二十九天)

game.h //文件中写游戏需要的数据类型和函数声明等。• 如果排查位置不是雷,周围也没有雷,可以展开周围的一片。game.c //文件中写游戏中函数的实现等。test.c //文件中写游戏的测试逻辑。◦ 中等 16*16棋盘,40个雷。◦ 困难 30*16棋盘,99个雷。◦ 简单 9*9 棋盘,10个雷。• 是否可以加上排雷的时间显示。1.2.2 文件结构设计。2. 扫雷游戏的代码实现。• 是否可以选择游戏难度。3. 扫雷游戏的扩展。

2023-08-24 00:15:23 450

原创 C语言(第二十八天)

再继续分析,我们在棋盘上布置了雷,棋盘上雷的信息(1)和非雷的信息(0),假设我们排查了某一个位置后,这个坐标处不是雷,这个坐标的周围有1个雷,那我们需要将排查出的雷的数量信息记录存储,并打印出来,作为排雷的重要参考信息的。假设我们排查(8,6)这个坐标时,我们访问周围的一圈8个黄色位置,统计周围雷的个数时,最下面的三个坐标就会越界,为了防止越界,我们在设计的时候,给数组扩大一圈,雷还是布置在中间的9*9的坐标上,周围一圈不去布置雷就行,这样就解决了越界的问题。//用来存放排查出的雷的个数信息。

2023-08-22 23:33:25 57

原创 C语言(第二十七天)

本质是因为函数默认是具有外部链接属性,具有外部链接属性,使得函数在整个工程中只要适当的声明就可以被使用。但是被static修饰后变成了内部链接属性,使得函数只能在自己所在源文件内部使用。其实static 修饰函数和static修饰全局变量是一模一样的,一个函数在整个工程都可以使用,被static修饰后,只能在本文件内部使用,其他文件无法正常的链接使用了。代码1是能够正常运行的,但是代码2就出现了链接错误。8.3.3 static 修饰函数。

2023-08-22 00:14:55 35

原创 C语言(第二十七天)

但是全局变量被static修饰之后,外部链接属性就变成了内部链接属性,只能在自己所在的源文件内部使用了,其他源文件,即使声明了,也是无法正常使用的。extern 是用来声明外部符号的,如果一个全局的符号在A文件中定义的,在B文件中想使用,就可以使用extern进行声明,然后使用。使用建议:一个函数只想在所在的源文件内部使用,不想被其他源文件使用,就可以使用static修饰。使用建议:如果一个全局变量,只想在所在的源文件内部使用,不想被其他文件发现,就可以使用。8.3.3 static 修饰函数。

2023-08-20 22:56:28 33

原创 语言(第二十七天)

结论:static修饰局部变量改变了变量的生命周期,生命周期改变的本质是改变了变量的存储类型,本来一个局部变量是存储在内存的栈区的,但是被static修饰后存储到了静态区。存储在静态区的变量和全局变量是一样的,生命周期就和程序的生命周期一样了,只有程序结束,变量才销毁,内存才回收。代码2中,我们从输出结果来看,i的值有累加的效果,其实test函数中的i创建好后,出函数的时候是不会销毁的,重新进入函数也就不会重新创建变量,直接上次累积的数值继续计算。的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

2023-08-19 22:58:59 38

原创 C语言(第二十六天)

前面的代码完成动作写了2条语句,把如果把strlen的返回值直接作为printf函数的参数呢?这样就是一个链式访问的例子了。上面的例子中,我们就第一个printf打印的是第二个printf的返回值,第二个printf打印的是第三个。所谓链式访问就是将一个函数的返回值作为另外一个函数的参数,像链条一样将函数串起来就是函数的链式访问。第三个printf打印43,在屏幕上打印2个字符,再返回2。第二个printf打印2,在屏幕上打印1个字符,再放回1。printf函数返回的是打印在屏幕上的字符的个数。

2023-08-18 23:32:51 39

原创 C语言(第二十五天)

这里的set_arr函数要能够对数组内容进行设置,就得把数组作为参数传递给函数,同时函数内部在设置数组每个元素的时候,也得遍历数组,需要知道数组的元素个数。嵌套调用就是函数之间的互相调用,每个函数就行一个乐高零件,正是因为多个乐高的零件互相无缝的配合才能搭建出精美的乐高玩具,也正是因为函数之间有效的互相调用,最后写出来了相对大型的程序。• return后边可以是一个数值,也可以是一个表达式,如果是表达式则先执行表达式,再返回表达式的结果。• 函数的实参是数组,形参也是可以写成数组形式的。

2023-08-18 23:29:58 40

原创 C语言(第二十四天)

我们可以把函数想象成小型的一个加工厂,工厂得输入原材料,经过工厂加工才能生产出产品,那函数也是一样的,函数一般会输入一些值(可以是0个,也可以是多个),经过函数内的计算,得出结果。我们在调试的可以观察到,x和y确实得到了a和b的值,但是x和y的地址和a和b的地址是不一样的,所以我们可以理解为形参是实参的一份临时拷贝。我们根据要完成的功能,给函数取名:Add,函数Add需要接收2个整型类型的参数,函数计算的结果也是整型。函数的参数部分需要交代清楚:参数个数,每个参数的类型是啥,形参的名字叫啥。

2023-08-16 23:20:53 43

原创 C语言(第二十三天)

C语言的国际标准ANSI C规定了一些常用的函数的标准,被称为标准库,那不同的编译器厂商根据ANSI提供的C语言标准就给出了一系列函数的实现。有数学相关的,有字符串相关的,有日期相关的等,每一个头文件中都包含了,相关的函数和类型等信息,库函数的学习不用着急一次性全部学会,慢慢学习,各个击破就行。库函数是在标准库中对应的头文件中声明的,所以库函数的使用,务必包含对应的头文件,不包含是可能会出现一些问题的。各种编译器的标准库中提供了一系列的库函数,这些库函数根据功能的划分,都在不同的头文件中进行了声明。

2023-08-15 23:13:23 37

原创 C语言(第二十二天)

在一个升序的数组中查找制定的数字n,很容易想到的方法就是遍历数组,但是这种方法效率比较低,比如我买了一双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?你会1,2,3,4...这样猜吗?一般你都会猜中间数字,比如:150,然后看大了还是小了,这就是二分查找,也叫折半查找。求中间元素的下标,使用 mid = (left+right)/2 ,如果left和right比较大的时候可能存在问。编写代码,演示多个字符从两端移动,向中间汇聚。

2023-08-14 23:17:22 34

原创 C语言(第二十一天)

有一个比较迷惑的点,变长数组的意思是数组的大小是可以使用变量来指定的,在程序运行的时候,根。从输出的结果来看,每一行内部的每个元素都是相邻的,地址之间相差4个字节,跨行位置处的两个元素(如:arr[0][4]和arr[1][0])之间也是差4个字节,所以二维数组中的每个元素都是连续存放的。遗憾的是在VS2022上,虽然支持大部分C99的语法,没有支持C99中的变长数组,没法测试;在C99标准之前,C语言在创建数组的时候,数组大小的指定只能使用常量、常量表达式,或者如果我们初始化数据的话,可以省略数组大小。

2023-08-13 22:53:18 41

原创 C语言(第二十一天)

以上一段代码中的arr数组为例,行的选择范围是0~2,列的取值范围是0~4,所以我们可以借助循环实现生成所有的下标。图中最右侧绿色的数字表示行号,第一行蓝色的数字表示列号,都是从0开始的,比如,我们说:第2行,第4列,快速就能定位出7。其实二维数组访问也是使用下标的形式的,二维数组是有行和列的,只要锁定了行和列就能唯一锁定数组中的一个元素。素,这时候就是二维数组,二维数组作为数组元素的数组被称为三维数组,二维数组以上的数组统称为多维数组。当我们掌握了二维数组的创建和初始化,那我们怎么使用二维数组呢?

2023-08-12 23:12:06 45

原创 C语言(第二十一天)

从输出的结果我们分析,数组随着下标的增长,地址是由小到大变化的,并且我们发现每两个相邻的元素之间相差4(因为一个整型是4个字节)。我们又知道数组中所有元素的类型都是相同的,那只要计算出一个元素所占字节的个数,数组的元素个数就能算出来。有了前面的知识,我们其实使用数组基本没有什么障碍了,如果我们要深入了解数组,我们最好能了解一下数组在内存中的存储。以后在代码中需要数组元素个数的地方就不用固定写死了,使用上面的计算,不管数组怎么变化,计算出的大小也就随着变化了。这里的结果是:10,表示数组有10个元素。

2023-08-11 23:41:35 39

原创 C语言(第二十天)

只要我们产生数组所有元素的下标就可以了,那我们使用for循环产生0~9的下标,接下来使用下标访问就行了。学习了一维数组的基本语法,一维数组可以存放数据,存放数据的目的是对数据的操作,那我们如何。在C语言中数组的访问提供了一个操作符[] ,这个操作符叫:下标引用操作符。接下来,如果想要访问整个数组的内容,那怎么办呢?3.2 数组元素的打印。3. 一维数组的使用。

2023-08-11 00:06:32 35

原创 C语言学习(第十九天)

存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。中的常量值是⽤来指定数组的⼤⼩的,这个数组的⼤⼩是根据实际的需求指定就⾏。数组也是有类型的,数组算是⼀种⾃定义类型,去掉数组名留下的就是数组的类型。有时候,数组在创建的时候,我们需要给定⼀些初始值值,这种就称为初始化的。数组的初始化⼀般使⽤⼤括号,将数据放在⼤括号中。数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。指的是数组名的名字,这个名字根据实际情况,起的有意义就⾏。数组中存放的多个数据,类型是相同的。

2023-08-09 23:28:09 32

原创 C语言学习(第十八天)

/%100的余数是0~99,0~99的数字+1,范围是1~100。//余数的范围是0~100,加100后就是100~200。还可以加上猜数字的次数限制,如果5次猜不出来,就算失败。//余数的范围是0~99。1.4 设置随机数的范围。2. 猜数字游戏实现。

2023-08-08 23:49:15 38

原创 C语言学习(第十七天)

如果再深入了解一下,我们就不难发现,其实rand函数生成的随机数是伪随机的,伪随机数不是真正的随机数,是通过某种算法生成的随机数。程序中在调用 rand 函数之前先调用 srand 函数,通过 srand 函数的参数seed来设置rand函数生成随机数的时候的种子,只要种子在变化,每次生成的随机数序列也就变化起来了。rand函数会返回一个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的大小是依赖编译器上实现的,但是大部分编译器上是32767。time(NULL);

2023-08-07 23:58:12 70 1

原创 C语言学习(第十六天)

goto 语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们的建议是能不用尽量不去使用;但是goto 语句也不是一无是处,在多层循环的代码中,如果想快速跳出使用 goto 就非常的方便了。2. 假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产生2~i-1之间的数字,也可以使用。1. 要从100~200之间找出素数,首先得有100~200之间的数,这里可以使用循环解决。3. 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

2023-08-06 23:28:13 22

原创 C语言学习(第十五天)

break 的作用是永久的终止循环,未来我们在某个条件发生的时候,不想再继续循环的时候,就可以使用 break 来完成。其实和while 循环中的break 一样, for 循环中的break 也是用于终止循环的,不管循环还需。continue 是继续的意思,在循环中的作用就是跳过本次循环中continue 后边的代码,继续进行。到循环的判断部分,进行下一次循环的判断,如果循环的调整是在continue 后边的话,可能会造成。要循环多少次,只要执行到了break ,循环就彻底终止,我们上代码。

2023-08-05 23:43:22 42 1

原创 C语言学习(第十四天)

在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。break 的作用是永久的终止循环,未来我们在某个条件发生的时候,不想再继续循环的时候,就可以使用 break 来完成。其实和while 循环中的break 一样, for 循环中的break 也是用于终止循环的,不管循环还需。到循环的判断部分,进行下一次循环的判断,如果循环的调整是在continue 后边的话,可能会造成。打印了1,2,3,4后,当i等于5的时候,循环正break 的地方终止,不再打印,不再循环。

2023-08-04 23:11:08 108 1

原创 C语言学习(第十三天)

0则执行循环语句,循环语句执行完后,再去执行表达式3 ,调整循环变量,然后再去表达式2 的地方执行判断, 表达式2 的结果是否为0,决定循环是否继续。分非常集中,便于代码的维护,而如果代码较多的时候while 循环的三个部分就比较分散,所以从形式上for 循环要更优一些。首先执行 表达式1 初始化循环变量,接下来就是执行 表达式2 的判断部分, 表达式2 的结果如果。整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。表达式的值不为0,则执行循环语。

2023-08-03 23:46:40 25

原创 C语言学习(第)

switch 后边的expression 的结果不是value1 ,也不是value2 的时候,就会执行。其实,在switch 语句中case 语句和default 语句是没有顺序要求的,只要你的顺序是满足实。在使用 switch 语句的时候,我们经常可能遇到一种情况,比如switch 后的表达式中的值无法匹。上面的练习中,我们发现应该根据实际的情况,来在代码中觉得是否使用 break ,或者在哪里使用。配代码中的case 语句的时候,这时候要不就不做处理,要不就得在switch 语句中加入。

2023-08-02 23:29:53 3261 2

原创 C语言学习(第十二天)

原因是switch 语句也是分支效果的,只有在switch 语句中使用 break 才能在跳出switch 语。句,如果某一个case 语句的后边没有break 语句,代码会继续玩下执行,有可能执行其他case。我们发现,7除以3本来余数是1,但是我们发现程序运行的结果多了一行“余数是2”的打印。printf("整除,余数为0\n");printf("整除,余数为0\n");前面的代码中,如果我们去掉case语句中的break,会出现什么情况呢?printf("整除,余数为0\n");

2023-08-01 22:53:35 20 1

原创 C语言学习(第十一天)

C语言逻辑运算符还有一个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。&& 就是与运算符,也是并且的意思, && 是一个双目操作符,使用的方式是a&&b , && 两边的表达式都是真的时候,整个表达式才为真,只要有一个是假,则整个表达式为假。|| 就是或运算符,也就是或者的意思, || 也是一个双目操作符,使用的方式是a || b , ||flag 就是假,如果flag 为假,!两边的表达式只要有一个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

2023-07-31 23:40:38 50 1

原创 C语言学习(第十天)

这是因为,我们先拿18和age中存放的10比较,表达式18<=10为假, 18<=age 的结果是0,再拿0和36比较,0<=36为真,所以打印了青年,所以即使当age是10的时候,也能打印青年,逻辑上是有问题,这个代码应该怎么写呢?有时候,可能会不⼩⼼写 出下⾯的代码,它可以运⾏,但很容易出现意料之外的结果。这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j。以上就是关于操作符,我们需要掌握的,剩下的只要按照字面意思理解使用就行,没有特别注意的。之间,应该使⽤下⾯的写法。

2023-07-30 23:13:22 41 1

原创 C语言学习(第十天)

很多初学者,上来以判断a 是 0,不等于 1 ,那就执行 else 子句,打印haha但是当你去运行代码,输出的结果是:啥都不输出。只要带上适当的大括号,代码的逻辑就会更加的清晰,所以大家以后在写代码的时候要注意括号的使用,让代码的可读性更高。上面的代码排版,让else 和第一个if 语句对齐,让我们以为else 是和第一个if匹配的,当if。进行匹配的,这样后边的if...else 语句是嵌套在第一个if 语句中的,如果第一个if 语句就不。成立,嵌套if 和else 就没机会执行了,最终啥都不打印。

2023-07-30 00:02:05 33 1

原创 C语言学习(第九天)

在C语言中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果是不是0,则语句执行。if(age >= 18) //if 后使用{} 控制多条语句-这个块也叫:程序块,或者复合语句。if(age >= 18) //if 后使用{} 控制多条语句-这个块也叫:程序块,或者复合语句。,if语句为真,则打印成年了,if语句为假,则不打印,对于printf("可以谈恋爱了\n");printf("奇数\n");上面的代码中橙色背景的代码也是嵌套在if 语句中的,构成了嵌套的if 语句。

2023-07-28 23:31:38 212 1

原创 C语言学习(第八天)

上面示例中, name 是一个长度为11的字符数组, scanf() 的占位符%10s 表示最多读取用户输入。如果要强制跳过字符前的空白字符,可以写成scanf(" %c", &ch) ,即%c 前加上一个空格,表。• %[] :在方括号中指定一组匹配的字符(比如%[0-9] ),遇到不在集合之中的字符,匹配将会。读入字符串的最长长度,即写成%[m]s ,其中的[m] 是一个整数,表示读取字符串的最大长度,后。上面示例中, %*c 就是在占位符的百分号后面,加入了赋值忽略符* ,表示这个占位符没有对应的。

2023-07-27 23:53:32 33 1

原创 C语言学习(第七天)

如果只想输出开头的部分,可以用 %.[m]s 指定输出的长度,其中[m] 代表一个数字,表示所要输出的长度。上面示例中, scanf() 读取用户输入时, %d 占位符会忽略起首的空格,从- 处开始获取数据,读。是. ,由于对应的占位符是%f ,会读取到.45e12 ,这是采用科学计数法的浮点数格式。scanf() 处理用户输入的原理是,用户的输入先放入缓存,等到按下回车键后,按照占位符对缓存。上面示例中,格式字符串%d%d%f%f ,表示用户输入的前两个是整数,后两个是浮点数,比如1。

2023-07-26 23:32:43 40 1

原创 C语言学习(第六天)

上面示例中, %12f 表示输出的浮点数最少要占据12位。上面示例中, %6.2f 表示输出字符串最小宽度为6,小数位数为2。上面示例中, %5d 表示这个占位符的宽度至少为5位。最小宽度和小数位数这两个限定值,都可以用 * 代替,通过printf() 的参数传入。上面示例中,如果希望小数点后面输出3位( 0.500 ),占位符就要写成%.3f。上面示例中, %*.*f 的两个星号通过printf() 的两个参数6 和2 传入。上面示例中, %+d 可以确保输出的数值,总是带有正负号。

2023-07-25 23:58:43 43

原创 C语言学习(第五天)

俗话说,强扭的瓜不甜,我们使用强制类型转换都是万不得已的时候使用,如果不需要强制类型转化就能实现代码,这样自然更好的。++是一种自增的操作符,又分为前置++和后置++,--是一种自减的操作符,也分为前置--和后置--.a原来是10,先使用,就是先赋值给b,b得到了10,然后再+1,然后a变成了11,所以直接结束后a是。printf() 的第二个参数就是替换占位符的值,上面的例子是整数3 替换%d。运算符- 用来改变一个值的正负号,负数的前面加上- 就会得到正数,正数的前面加上- 会得到负。

2023-07-24 22:43:24 58 1

原创 C语言学习(第四天)

局部变量: 在⼤括号内部定义的变量就是局部变量局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。上面示例中,尽管变量x 的类型是float (浮点数),但是6 / 4 得到的结果是1.0 ,而不是。+ 和- 都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双目操作符。全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。除号的两端如果是整数,执行的是整数除法,得到的结果也是整数。注:操作符也被叫做:运算符,是不同的翻译,意思是一样的。

2023-07-23 22:17:02 36 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除