草庐IT

华为OD机试(C语言)真题

     JavaScript版本题解     Python+JAVA+JS三个版本题解合集。!!!超值优惠!!!      JAVA版本题解        Python版本题解    C++版本题解集中回答几个问题,以后再私信我这些问题,不回复了哦:1:考试链接上写着【2022Q4A卷】,对应的就是新题库,看新题库的目录即可,一般一年更新一次题库,上一次就是22年11月更新的。2:机试没过,半年的冷冻期。3:旧题库不会再考到了,学有余力可以刷一刷。4:订阅专栏后,专栏内所有的文章都可以看,以后再更新新的题目也可以看,每年更新的题目都会更新到一个专栏里面。5:文章内均有题目+思路+代码。6:已

c++ - boolean 读/写操作可以在 x86 上不是原子的吗?

这个问题在这里已经有了答案:Whyisintegerassignmentonanaturallyalignedvariableatomiconx86?(5个回答)Canmodernx86hardwarenotstoreasinglebytetomemory?(6个回答)关闭3年前.假设我们有两个线程,一个在循环中读取boolean值,另一个可以在特定时间切换它。就我个人而言,我认为这应该是原子的,因为C++中的sizeof(bool)是1个字节,您不会部分读/写字节,但我想100%确定。是还是不是?编辑:为了将来引用,同样适用于int吗? 最佳答案

c++ - boolean 读/写操作可以在 x86 上不是原子的吗?

这个问题在这里已经有了答案:Whyisintegerassignmentonanaturallyalignedvariableatomiconx86?(5个回答)Canmodernx86hardwarenotstoreasinglebytetomemory?(6个回答)关闭3年前.假设我们有两个线程,一个在循环中读取boolean值,另一个可以在特定时间切换它。就我个人而言,我认为这应该是原子的,因为C++中的sizeof(bool)是1个字节,您不会部分读/写字节,但我想100%确定。是还是不是?编辑:为了将来引用,同样适用于int吗? 最佳答案

c++ - 多线程妄想症

这是一个复杂的问题,请在回答之前仔细考虑。考虑这种情况。两个线程(一个读取器和一个写入器)访问一个全局int。这安全吗?通常,我会不假思索地回应,是的!但是,在我看来HerbSutter并不这么认为。在他关于有效并发的文章中,他讨论了flawedlock-freequeue和correctedversion.在第一篇文章的结尾和第二篇文章的开头,他讨论了一个很少被考虑的变量特征,写顺序。整数是原子的,很好,但整数不一定是有序的,这可能会破坏任何无锁算法,包括我上面的场景。我完全同意,保证在当前和future的所有平台上纠正多线程行为的唯一方法是使用原子(AKA内存屏障)或互斥锁。我的问

c++ - 多线程妄想症

这是一个复杂的问题,请在回答之前仔细考虑。考虑这种情况。两个线程(一个读取器和一个写入器)访问一个全局int。这安全吗?通常,我会不假思索地回应,是的!但是,在我看来HerbSutter并不这么认为。在他关于有效并发的文章中,他讨论了flawedlock-freequeue和correctedversion.在第一篇文章的结尾和第二篇文章的开头,他讨论了一个很少被考虑的变量特征,写顺序。整数是原子的,很好,但整数不一定是有序的,这可能会破坏任何无锁算法,包括我上面的场景。我完全同意,保证在当前和future的所有平台上纠正多线程行为的唯一方法是使用原子(AKA内存屏障)或互斥锁。我的问

c++ - 尾随逗号和 C++

我在某处读到C++标准不允许enuman_enum{a,b,c,};之类的东西,而C的更高版本(我认为从90年代中期开始)确实允许这种带有逗号结尾的声明。如果C++应该与C向后兼容,那么这个特性怎么会被禁止呢?有什么特殊原因吗?我还读到这样的尾随逗号实际上很好,所以只会增加困惑。 最佳答案 C++03(它是C++98的一个相当小的更新)基于C89(也称为C90,取决于您是ANSI还是ISO)的C兼容性。C89不允许尾随逗号。C99确实允许。C++11确实允许它(7.2/1有枚举声明的语法)。事实上,即使是C89,C++也不是完全向后

c++ - 尾随逗号和 C++

我在某处读到C++标准不允许enuman_enum{a,b,c,};之类的东西,而C的更高版本(我认为从90年代中期开始)确实允许这种带有逗号结尾的声明。如果C++应该与C向后兼容,那么这个特性怎么会被禁止呢?有什么特殊原因吗?我还读到这样的尾随逗号实际上很好,所以只会增加困惑。 最佳答案 C++03(它是C++98的一个相当小的更新)基于C89(也称为C90,取决于您是ANSI还是ISO)的C兼容性。C89不允许尾随逗号。C99确实允许。C++11确实允许它(7.2/1有枚举声明的语法)。事实上,即使是C89,C++也不是完全向后

c++ - "const"只是意味着只读还是更多?

const的真正含义是什么?只读对我来说似乎封装了它的含义,但是,我不确定我是对的。如果只读和const不同,谁能告诉我为什么?提出这个问题的原因是thisanswer他说const“just”在C中意味着只读。我认为这是allconst的意思,无论它是C还是C++.他是什么意思?为了回答C与C++中const的具体差异,我创建了一个新问题:Howdoes"const"differinCandC++?根据R..的建议。 最佳答案 通过将变量声明为const,您表明编译器您无意修改该变量。但这并不意味着其他人没有!它只是为了允许一些优

c++ - "const"只是意味着只读还是更多?

const的真正含义是什么?只读对我来说似乎封装了它的含义,但是,我不确定我是对的。如果只读和const不同,谁能告诉我为什么?提出这个问题的原因是thisanswer他说const“just”在C中意味着只读。我认为这是allconst的意思,无论它是C还是C++.他是什么意思?为了回答C与C++中const的具体差异,我创建了一个新问题:Howdoes"const"differinCandC++?根据R..的建议。 最佳答案 通过将变量声明为const,您表明编译器您无意修改该变量。但这并不意味着其他人没有!它只是为了允许一些优

c++ - 在 C/C++ 中使用 % (模数)有什么替代方法吗?

我曾经在某处读到,模数运算符在小型嵌入式设备上效率低下,例如没有整数除法指令的8位微Controller。也许有人可以证实这一点,但我认为差异比整数除法运算慢5-10倍。除了保留一个计数器变量并在mod点手动溢出到0之外,还有其他方法吗?constintFIZZ=6;for(intx=0;x对比:我目前的做法:constintFIZZ=6;intfizzcount=1;for(intx=1;x=FIZZ){print("Fizz\n");fizzcount=0;}} 最佳答案 啊,按位算术的乐趣。许多除法例程的副作用是模数-因此在少