自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言计算超大阶乘

利用C语言计算一个超级大的阶乘!

2024-01-09 22:12:44 365

原创 【C语言易错】for语句易错

原因:开始时 i = 0,判断条件为真,打印0,接着i ++ 变成1,此时不满足判断条件 “i!= 1”,于是不打印1。然后,很容易认为 i 继续自增并打印2 3,这是不对的,因为判断条件一旦为假,循环就结束了,而不是执行变量调整部分继续判断.......这是一个易忽略的点!错误结果:0 2 3。

2023-11-18 13:59:18 120

原创 【C语言疑难杂症】调试查看内存窗口时全是问号

进入调试模式时,我们位于程序的起始位置,而此时程序没有进行任何操作,没有创建变量i 、 没有给变量i分配地址.......,也就是此时编译器在此时根本不知道变量i的存储在,也就谈不上查看i的值了。按F11,再往后走几步,直至程序创建了变量 i ,那么也就完成了赋值、分配内存的操作。然后就可以在内存窗口中查看i的值了。我们创建了一个变量i并赋值,此时进入调试模式并用内存窗口查看变量i中的值时,却发现全是问号。编译器:VS2022。

2023-10-25 12:06:41 558

原创 【c语言易错】if语句常犯错误

编译器在执行上述代码时,执行顺序是先判断“a==b”并返回一个值作为表达式“a==b”的结果,然后判断“a==b==c”,然后此时表达式“a==b”已经被返回值1(假设前面的判断结果为真)替代,也就是说,此时的“a==b==c”变成了“1==c”,这表示判断c的值是否等于1,显然与最初的目的不符。原因同第三点一样,应当改为b>=a && b<=c。判断相等时应该使用“==”,"="是赋值运算符。正确的代码应该是:a==b && b==c。

2023-10-20 13:30:17 406

原创 【C语言易错】设定数组大小时不能使用变量名

使用数组时,在某些特殊情况下,我们需要去更改数组的大小,但是当数组的使用次数很多时,更改起来就较为麻烦,于是想到用变量来代替数字去设定数组的大小。但是并不能这么做,这是一种语法错误。解决方法:定义一个宏代替变量。可以看到,此时编译器不再报错。

2023-10-18 18:16:38 504

原创 【C语言疑难杂症】char 为何能表示 -128

不难发现,时针顺时针走一步,等价于逆时针走11步,我们将 -11 称为 1 的“补数”,同理,-10 是 2 的“补数”......我们还能发现,互为“补数”的两个数的绝对值之和是这个计量系统的模。如果将顺时针走的步数用正数来表示,将逆时针走的步数用负数来表示,那么我们就能发现,时钟这个计量系统能够表示的数值范围由 -11 ~ 11 变成了 -12 ~ 11!的规律,于是,将逆时针走0步替换为逆时针走12步,也就是将-12作为0的“补数”,这样就恰好满足规律了。“原数”+“补数” = “模”

2023-10-18 11:16:52 626

原创 【C语言错题笔记】

易知代码是将-1、-2、-3、... 、-1000逐个装入数组arr中,但是应当注意数组的类型是char(字符数组),而char的数值存储范围是-128~127,因此-128以后的数字装入数组中时会发生某些改变。同理,接下来是126、125 、 124 ...... 、1 、0 、-1、-2 、-3........,根据ASCLL表可知,ASCLL码值0对应的字符是 ‘\0’,当函数strlen读取到0时就会停止,1~128~0 总共255个数(0不计在内),因此最终的输出结果是255。

2023-10-16 14:04:24 25

原创 【C语言错题笔记】

i是一个无符号数,所以只能表示非负数,永远也不可能小于0,进而陷入打印的死循环。至于为什么后边打印非常的的数是因为0 - 1回向前借位,然后二进制变成11111111 11111111 11111111 11111111,即4294967295。结果:打印完9 8 7 6 5 4 3 2 1 0 后死循环。

2023-10-16 10:55:22 45

原创 【C语言易错】不能用 ^ 计算次方??

在C语言中,^ 是一个位操作符——按位抑或,而非次方。格式:pow(操作数 , 次方 )1的2次方等于3,显然错了!

2023-10-15 19:08:49 241

原创 【C语言疑难杂症】“无法启动程序......系统找不到指定的文件”

还有一种原因,就是新建源文件时,新建项的后缀写的是.cpp,这样这个文件可能不会自动存放到项目所在的目录,造成上述问题。这种情况我们只需要删除原来的源文件,然后新建一个并且将后缀改成 .c 即可。项目——>项目属性——>属性配置——>链接器——>常规——>输出文件——>编辑。项目——>项目属性——>配置属性——>常规——>输出目录——>编辑。创建的项目和源文件的路径不同(两者在不同的地方)查看两者的目录,然后把源文件移动到项目目录。

2023-10-08 15:03:30 9450 8

原创 浅析原码反码补码

进制表示法中,一个数的每一位都有着不同的权重,例如十进制中每一位的权重都是10的次幂,对应图中的10º、10¹、10²,我们将每一位上的数字乘以这个位置对应的权重,然后全部相加,就能得到这个数对应进制的表示形式。与十进制相同,二进制每一位的权重就是2的次幂,用每一位上的数字乘以对应权重然后全部相加就能得到这个数的二进制表达形式了。

2023-10-06 04:17:33 124 1

原创 【C语言错题笔记】

2、-128存入a中发生截断,变为10000000。打印时,发生整形提升,由于char是有符号型,补充原符号位,变成111111111111111111111111100000000(补码),由于打印类型是%u,此时编译器认为这是一个无符号数,那么补码反码原码相同,直接输出,转化为十进制为4294967168。3、补位时,看原来的类型(有符号char),不要被%u影响以为补充0。%u在最终的打印阶段发挥作用。1、%u意思是打印十进制无符号整数。

2023-10-04 17:53:15 56 1

原创 【C语言疑难杂症】b = a++;根据运算符优先级,不应该先自增然后赋值给b吗??

对于表达式 b = a++,根据运算符的优先级,的确先执行自增运算符++,但它是后置的++,也就是作用时先让表达式 a++ 产生一个结果,然后变量a再自增。综上,++的执行次序在=之前,但是赋值时采用的是表达式a++的返回值,而a++的返回值是a的旧值还是自增后的值取决于++是后置的还是前置的。然后再执行赋值运算符,将表达式a++的返回值(a的旧值,刚刚产生的结果)赋给变量b。答:先执行++不等于先自增!

2023-10-04 17:31:00 297 1

原创 【C语言错题笔记】

请问a,b,c的输出结果分别是什么

2023-10-04 17:11:59 46 1

原创 【C语言妙操作】利用 ^ 和 & 求一个数二进制位中1的个数

根据按位与的规则我们知道,对应位存在0则结果为0,均为1结果才为1。由于1除了最后一位均为0,那么它按位与一个数时,可以让这个数除了最后一位都变成0。再看最后一位,如果为1,那么结果为1,为0则结果为0。利用这个特性,我们可以将作用后的结果的最后一位数剥离,如果是0那么它的前身是1,如果是1,那么它的前身是0。如果最终结果为1,那么作用数的最后一位为1,结果为0那么作用数的最后一位为0。2、 1按位与一个数,可以让这个数二进制位最后一位不变,其他位均变成0。

2023-10-04 10:03:22 32 1

原创 【C语言】指针大小与指针类型无关?

电脑操作系统分为32位和64位,其中32位操作系统有32根地址线,因此它的地址是一个由32个二进制位组成的数字,最多有2^32中情况,也就是32位操作系统最多有2^32个内存地址;同理,64位操作系统最多有2^64个内存地址,可以访问的内存更大,运行速率也就随之更快。电脑中的内存被划分为许多个小的内存单元,每个单元都有一个二进制编号,这个编号就是这个内存单元的地址,也就是指针。32位操作系统的内存地址编号有32个二进制位(比特位),因此32位操作系统的指针大小为4个(32/8)字节;

2023-09-29 10:32:30 100

原创 【C语言易错】直接用一个数组对另一个数组进行赋值

数组名的本质是首元素的地址,地址,地址!也就是说arr1和arr2是两个数字,因此图中的“装填操作”大错特错。图中的操作试图将数组arr2中的内容直接装填进数组arr1,这么做是错误的。利用循环语句对两个数组中的元素进行一一调换。

2023-09-27 13:51:57 595 1

原创 【C语言妙操作】循环里的迭代

使用场景:循环计算并将结果迭代至一个变量中。+= :先和对象相加,再将结果赋值给自己。例:计算1+2+3+...+10。让这个变量既参加运算又接受结果。运用符合操作符可以简化这一过程。

2023-08-23 22:30:58 79

原创 【C语言妙操作】利用 % 和 / 对多位数(整数)实现位数分离

1234%10的意思是对10取模,即取1234除以10得到的余数。1234/10的意思是取1234除以10的商。2、利用 / 得到十位及以上的位数。

2023-08-23 21:59:31 1200

原创 【C语言疑难杂症】VS2022 报错LNK1168 无法打开 filename(项目名称) 进行写入

然后将其关闭即可。

2023-08-18 21:24:27 1047 1

原创 【C语言疑难杂症】sizeof与函数strlen的区别

sizeof计算字符个数的方法是先计算出整个字符串的字节大小,然后除以单个字符的字节大小得到字符个数。此时结束标志字符 '\n' 也会计算在内,因此用最终结果减去一才是字符串中的字符个数。strlen从字符串中的第一个字符开始读取,遇见字符串结束标志 ’\n’ 时,停止读取(结束标志‘\n’不会读取)1.类型:sizeof是操作符;strlen是库函数,需要引入头文件。2.功能:sizeof用于计算对象所占内存字节数;strlen用于计算字符串中的字符个数。

2023-08-17 12:08:42 38 1

原创 【C语言疑难杂症】自定义函数名由多个单词组成时可能犯的错误

多个单词之间不能用空格连接,否则会报错。正例:一般用下划线连接。

2023-08-17 11:35:55 46 1

原创 【C语言疑难杂症】if和else if后的判断条件同时成立

原因:if与if else是一个非此即彼的关系,它们不能同时执行。结果:程序执行位置靠前的if后的语句项。

2023-08-17 11:21:44 1696 1

原创 【C语言疑难杂症】a++与a+1

a++表示自增,即变量a的值增加1;而a+1是个计算式,其返回值需要一个变量来接收,如b=a+1表示对变量b赋值,其值是在变量a的值的基础上增加1。本质区别:a++有返回值,而a+1没有返回值。

2023-08-17 11:07:06 757 1

原创 【C语言疑难杂症】vs2022使用库函数时被警告或提示错误

但是第二个函数在形式上显然要更复杂,使用它会影响我们敲代码的速度,于是我们选择第二种方法,但是每次都在程序开头打那么长一串字符太费劲,有没有什么方法让程序自动生成这句话呢?我们每次创建一个源文件时,这个源文件都拷贝自一个叫newc++file.cpp 的文件,该文件初始时为空,只要我们在这个文件中加入那串字符,那么程序就会自动生成了!3.我们可以将该文件拷贝到桌面或其他路径,得到备份的修改权限,然后再将备份放回原来的路径(在文件VCprojectItenms中)并覆盖掉原来的文件即可。

2023-08-17 10:18:35 512

原创 【C语言疑难杂症】Visual Studio控制台一闪而过

首次我们右击项目点击。

2023-08-01 22:49:18 121

原创 【C语言疑难杂症】定义数组没有声明大小引起的错误

那么编辑器就会把首次定义数组时数组里存放的元素个数默认为该数组所能存放元素个数的最大值。图示数组arr并未声明大小,

2023-07-31 21:28:19 309

原创 【C语言疑难杂症】逻辑或 || 两边的条件同时成立

如果||两边的条件同时成立,下面的语句也只会执行一次。

2023-07-31 10:08:17 437 1

原创 【C语言疑难杂症】break的使用困惑

(2)在嵌套循环语句中,break只影响内部循环而不作用于外部循环。(1)break不作用于if语句中。

2023-07-30 10:13:18 48 1

空空如也

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

TA关注的人

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