文章目录
初学翁凯老师的c语言后对其中一些问题的看法
学习c语言已有数天,其中一些问题今日来看仍有研究价值,故记录探讨之
一、一个课后的简单逻辑语法问题
++i+±-
i++++
a = b += c++ - d + --e / -f
二、解答和一些思考
1.++i+±-
这是一个不符合 C 或 C++语法规范的表达式。在 C 和 C++中,不能对同一个变量进行多次递增或递减操作连在一起。
2.i++++
同样不符合语法规范,不能连续对一个变量进行多次自增操作。
3.a = b += c++ - d + --e / -f
问题初探
在 C 语言中,这个表达式 a = b += c++ - d + --e / -f
的语法是不正确的。
首先,自增(++
)和自减(--
)运算符的优先级高于四则运算。在这个表达式中,c++
会先执行自增操作,--e
会先执行自减操作。
然后,b +=...
这种复合赋值表达式的使用方式在这种复杂的混合运算中可能会导致代码的可读性降低,并且容易出错。
如果要使这个表达式有意义并且符合 C 语言的语法规则,应该将其分解为多个更简单和清晰的表达式,例如:
--e;
c++;
int temp = c - d + e / -f;
b += temp;
a = b;
这样可以更清晰地理解每个操作的顺序和结果,也更符合良好的编程习惯。
原代码逻辑
表达式 a = b += c++ - d + --e / -f
的含义试图分解如下:
c++
:先使用c
的值参与运算,然后c
的值增加 1 。--e
:先将e
的值减 1 ,然后使用减 1 后的e
的值参与运算。c++ - d + --e / -f
:计算c
原来的值减去d
的值,再加上e
减 1 后的值除以-f
的值。b += c++ - d + --e / -f
:将上述计算的结果累加到b
上,也就是b = b + (c++ - d + --e / -f)
。a = b += c++ - d + --e / -f
:将b
累加后的最终结果赋值给a
,即a = b
。
但需要注意的是,这样复杂且难以理解的表达式在实际编程中应尽量避免,因为它会降低代码的可读性和可维护性,容易引入难以察觉的错误。
举例
假设初始时,b = 10
,c = 5
,d = 3
,e = 8
,f = 2
。
首先,--e
会先将 e
的值减 1 ,所以 e
变为 7 。
然后,c++
先使用 c
的值 5 参与运算,之后 c
的值变为 6 。
接下来计算 c++ - d + --e / -f
:
c++ - d
为 5 - 3 = 2
。
--e / -f
即 7 / -2 = -3
。
所以 c++ - d + --e / -f = 2 + (-3) = -1
。
然后进行 b += -1
,即 b = b + (-1)
,所以 b = 10 + (-1) = 9
。
最后,a = b
,所以 a = 9
。
初次写博客的看法及感受
这是本人在CSDN社区上的第一次创作,犹豫了几天。最终在今天上午学习了markdown语法后开始了这篇文章。内容比较简单,是在看完翁凯老师的其中一课后思考了一会的(具体哪节课我忘了)。
在之后的时间里望各位大佬多多关照
最后以一句话结束今天的写作
要紧的是果敢地迈出第一步,对与错先都不管,自古就没有把一切都设计好再开步的事。别想把一切都弄清楚,再去走路。鲁莽者要学会思考,善思者要克服的是犹豫。目的渴求完美,举步之际则无需周全。 --史铁生
这句话给我创作决心,希望也能帮助到你