开发平台(Platform): (Ex: Win10, Linux, ...) 平台无关
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出) 环境无关
额外使用到的函数库(Library Used): (Ex: OpenGL, ...) 无
问题(Question):
如何在不增加宣告变量和使用跳跃的情况下
写出语意等价但是不会重复判断的程式码(见下)
喂入的资料(Input): 无
预期的正确结果(Expected Output): 保持语意等价
错误结果(Wrong Output): 无
程式码(Code):(请善用置底文网页, 记得排版)
1: while (1)
2: {
3: while (!a() && b())
4: c(); // c() may affect a() and b()
5:
6: if (a())
7: break;
8:
9: // remaining code section
0: }
流程图大概是这样子 www
https://i.imgur.com/DBNP7ts.jpg
补充说明(Supplement):
由于有点洁癖的缘故
觉得相同的函数 a() 需要触发两次很碍眼(灿笑
而且 if (a()) 中的 a() 必定为真
若且唯若 while (!a() && b()) 的 a() 必定为真
平常都可以改一下控制的逻辑
达到至少我满意的程度(?
不知道存不存在控制流程可以解决我的困扰 >皿<