
C语言疑难杂症
文章平均质量分 60
Stay hungry, Stay foolish
淡巴枯
莫问前程路,昂首自逸行
展开
-
问题表达式
表达式的求值部分由操作符的优先级决定。但有时会由于编码的不规范,会导致表达式执行顺序混乱,出现问题。以下对于一些情况进行举例。我们写出的表达式如果不能通过操作符的属性确定唯一的计算路径,那这个表达式就是存在问题的。本篇博客为本人学习C语言时的详细笔记,如有错误之处,还望各位指正。文章为原创,如要转载请注明出处。原创 2023-12-19 14:44:59 · 134 阅读 · 0 评论 -
整形提升问题
C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。原创 2023-12-18 09:39:21 · 217 阅读 · 0 评论 -
C语言短路操作
C语言中常用的短路操作符有两个,即逻辑与(&&)和逻辑或(||)。对于逻辑与(&&)操作符,当左侧的表达式为假(非零)时,整个表达式的结果为假,并且右侧的表达式不会被求值。只有当左侧的表达式为真(零)时,才会继续求值右侧的表达式。对于逻辑或(||)操作符,当左侧的表达式为真(非零)时,整个表达式的结果为真,并且右侧的表达式不会被求值。只有当左侧的表达式为假(零)时,才会继续求值右侧的表达式。原创 2023-12-18 09:04:43 · 174 阅读 · 0 评论 -
函数栈帧的创建和销毁
在调用之前,就把call指令下一条指令的地址压栈,当函数要返回的时候弹出ebp就能够找到原始上一个函数调用的ebp,然后指针往下走就能找到esp的地址回到栈帧空间。因为局部变量在声明时并没有被初始化,值是随机放进去的。形参是实参的一份拷贝,值是相同的,地址不同。传参的顺序是怎样的?传参的顺序是怎样的?为什么局部变量的值是随机值?函数调用是结束后怎么返回的?为什么局部变量的值是随机值?函数调用是结束后怎么返回的?局部变量是怎么创建的?形参和实参是什么关系?局部变量是怎么创建的?函数调用是怎么做的?原创 2023-08-29 22:28:25 · 249 阅读 · 0 评论 -
特殊for循环问题
此题并未进入循环,所以循环次数为0。因为在代码中的条件判断部分,并不是k==0的条件判断,而是k=0的变量赋值,而这个语句的值为0。所以并未进入循环,循环次数为0。题目:请问循环要循环多少次?原创 2023-08-11 13:15:32 · 141 阅读 · 0 评论 -
悬空else问题
这个问题并非C语言独有,但是很多刚入门的小伙伴常常会出现此失误。在C语言中,有这样一个规则,即else始终与同一对括号内最近的未匹配的if结合。原创 2023-07-22 22:19:26 · 306 阅读 · 0 评论 -
三字符序列(三字母词)
C语言源程序的字符集是7为ASCII码的子集,但它是ISO 646-1983不变代码集的超集。为了将程序通过这种缩减的字符集表示出来,下列所示的所有三字符序列都要用相应的单个字符替换,这种替换在进行所有其他处理之前进行。原创 2023-07-20 11:02:21 · 435 阅读 · 0 评论 -
非常规自增自减
在C语言的单目操作符中有++(自增)和–(自减)这两个运算符。假设有变量i,我想让变量i加上1,那么我们会写成i=i+1这样的形式。但有了自增自减运算符后,我们可以直接写成i++这样的形式。这极大的简化了我们的编程。但是在一些学校的考试中,难免会出现一些为了考察学生运算符的掌握情况而出的恶心题目。这种题目并不会对实际开发起到帮助,同时一些题目的正确性也有待考量。下面会对这些题目进行分析。原创 2023-07-16 22:36:09 · 323 阅读 · 0 评论 -
VisualStdio中scanf报错问题
报错代码及说明报错代码为C4996会在哪种编译器中报错?VisualStdio系列编译器为什么会报错?因为VisualStdio比较严谨,认为scanf不安全。原创 2023-06-11 17:46:42 · 853 阅读 · 0 评论