C/C++里for循环的初始化语句、测试及更新表达式可以是任意合法的语句/表达式,甚至可以空缺。当初始化语句及测试表达式空缺时,需要用一个分号占位。灵活运行上述特性,可以写出很“复杂”的for循环。从软件工程的角度看,不必要的使用“技巧”会使得程序难以理解和维护,实践中,我们应该避免这种过分依赖于技巧的程序写法。
Codelearn
分享Python,C/C++相关的技术文章, 海洋饼干叔叔@重庆大学
C/C++里for循环的初始化语句、测试及更新表达式可以是任意合法的语句/表达式,甚至可以空缺。当初始化语句及测试表达式空缺时,需要用一个分号占位。灵活运行上述特性,可以写出很“复杂”的for循环。从软件工程的角度看,不必要的使用“技巧”会使得程序难以理解和维护,实践中,我们应该避免这种过分依赖于技巧的程序写法。
C++中的goto语句用于跳转程序的执行点至指定位置。从效率上看,goto很高效,从软件工程角度,goto语句的使用容易导致程序逻辑混乱、变得难以理解和维护。
在微实践-地球时间里,我们通过复杂的求余整除等操作,计算并输出了当前的格林尼治时间。
读者可能觉得上述计算过程非常麻烦。事实上,这只是为了找一个题目给读者练习求模及除法操作符。对这些常见的问题,C/C++肯定有更快更好的解决方案,该问题也可用下述C程序解决。
在整数a、b已经被定义的前提下,a = (b++,a*2)是合法的C++代码,其中的逗号是一个操作符。在作者看来,C++中的逗号操作符是一项非常反直觉并且容易导致错误的语法特性,建议读者非必要不使用。
C语言控制台应用中获取用户输入主要靠scanf()函数。在这本以C++作为主线的程序设计教材里,scanf()函数并非必须介绍的内容,故以在线扩展阅读的形式提供。
多年的实践证明,递增和递减操作符的不恰当使用是诸多软件缺陷的来源。在那些新的编程语言比如Python里,不提供递增及递减操作符。
浮点数就是所谓的小数,一个float类型的对象占据4个字节共32比特。
需要注意的是,二进制形式的整数字面量是C++ 14版本引入的新特性,而多数IDE环境默认执行C++ 11甚至更早的标准。为了使得上述程序可以正确地编译和运行,读者需要调整C++的版本。
考虑如下问题,我们试图定义一个名为Student的结构,这个结构应包括学生的姓名,学生已修课程的数量以及已修课程各科的分数。实践中,每个学生已修课程的数目是不一样的,这使得我们在定义用于存储分数的结构成员时面临两难的局面:
• 如果将该数组定义得比较小,会存在某学生所修课程数量较多,存不下的情况。
• 如果将该数组定义得很大,比如10000,则对于大多数学生而言,内存空间浪费严重。而且,无论将该数组定义得再大,理论上都存在实际数据超量,存不下的可能。