assert(3 / 2 == 1): Does this work?
assert(3 / 2 == 1): Does this work?
我刚刚了解到除法运算符的舍入行为在C++11之前没有定义。解决方案是使用std::div
。(安全地舍入到下一个较小倍数)
我的程序总是假设/
只会截断小数部分。作为一个快速解决方案,我希望包含一个断言,这样,如果有人在具有不同舍入行为的平台上编译,我至少会得到一个错误。
assert(3 / 2 == 1)
还是static_assert(3 / 2 == 1)
能胜任这项工作?或者,这些常量会被编译器的内部算法优化掉吗?这可能与机器的实际操作不同?
"我刚刚了解到除法运算符的舍入行为在C++11之前没有定义"。如果两个参数都是正整数,则情况并非如此。
3 / 2 == 1
是一个值为true
的编译时常量表达式,因此代码将编译为assert(true)
。
考虑将static_assert
用于编译时断言。
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 为什么使用 "this" 指针调用派生成员函数?
- C++错误:"error: int aaa::bbb is protected within this context"
- 我可以将调用类的"this"传递给 lambda 函数吗?
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 关于C++中具有多重继承"this"指针的说明
- 在noexcept 规范中是否允许使用"this"?
- 如何修复"error: ‘_1’ was not declared in this scope"?
- C++调用具有 *this 属性的单个帮助程序函数
- Doees the 'this' 指针参与虚函数的多态行为
- 在 c++ 中正确定义"this"关键字?
- 将系数存储在头文件的数组中("does not name a type"错误)
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- QObject::连接无法将信号连接到*this*对象的插槽
- 在 QT 创建器"This does not seem to be a Debug build."中调试
- Qt - 清洁和重建后的"This does not seem to be a debug build"
- Xcode的GDB在设备上安装时显示"Warning: the current language does not match this frame"
- assert(3 / 2 == 1): Does this work?
- what does ++operator do in this void uart_puts(unsigned char