constant-expression相关内容

错误:开关量不是整数

我已经通过 StackOverflow 和多谷歌链接研究了我的问题,但我仍然感到困惑.我认为对我来说最好的事情就是问... 我正在创建一个简单的命令行计算器.到目前为止,这是我的代码: const std::string Calculator::SIN("sin");const std::string 计算器::COS("cos");const std::string 计算器::TAN(" ..
发布时间:2022-01-19 10:35:34 C/C++开发

如何检查参数是否是 C 预处理器宏中的整数常量表达式?

我目前正在清理现有的 C 库以无耻地发布它. 预处理器宏NPOT 用于计算给定整数常量表达式在编译时 的下一个较大的2 次幂.该宏通常用于直接初始化.对于所有其他情况(例如使用可变参数),有一个具有相同功能的内联函数. 但是如果用户传递一个变量,算法就会扩展为一大段机器代码.我的问题是:我可以做些什么来阻止用户向我的宏传递除整数常量表达式之外的任何内容? #define NPOT(x ..
发布时间:2022-01-11 19:52:15 其他开发

为什么在未计算的操作数中不允许使用 lambda 表达式,但在常量表达式的未计算部分中允许使用 lambda 表达式?

如果我们查看 草案 C++ 标准 部分 5.1.2 Lambda 表达式 段落 2 说(强调我的未来): 对 lambda 表达式的求值产生一个 prvalue 临时值 (12.2).这个临时对象称为闭包对象.lambda 表达式不得出现在未计算的操作数中(第 5 条).[注意:闭包对象的行为类似于函数对象(20.8).-尾注] 和部分 5.19 常量表达式 段落 2 说: 条件表达 ..
发布时间:2021-12-23 21:59:15 C/C++开发

C++ 预期的常量表达式

#include #include #include #include #include 使用 std::ifstream;使用命名空间标准;int main (void){整数计数=0;浮点数=0;浮动最大值=-1000000;浮动 sumOfX;浮动 sumOfY;整数大小;int 负Y=0;int正X=0;int 负X=0;ifstream 点 ..
发布时间:2021-11-18 02:10:43 C/C++开发

为什么创建静态 const std::string 会导致异常?

我有字符串常量,用于在我的应用程序中的多个地方使用的字符串: 命名空间通用{static const std::string mystring = "IamAwesum";} 发布有关其他内容的问题时 (编译期间未包含在目标中的 .h 文件会发生什么情况?),另一位用户发表了以下评论: 请注意,在这种情况下,您的静态字符串是全局的.所以他们是可以随时创建异常并且无法被捕获.我劝你使用返回 ..
发布时间:2021-08-28 18:43:33 C/C++开发

在常数表达式中除以零

如果我用一个常量表达式除以零,我的玩具编译器将崩溃: int x = 1/0; C和/或C ++标准是否允许这种行为? 解决方案 仅出现 1/0 不会使编译器崩溃.最多可以假定该表达式将永远不会被求值,因此,执行将永远不会到达给定的行. 如果保证对表达式进行求值,则该标准对程序或编译器没有任何要求.然后编译器可能会崩溃. 1/0如果经过评估,则仅是UB. C11标 ..

就其浮点数而言,是否存在正确的常量表达式(以浮点数表示)?

问题:给定一个浮点常量表达式,我们是否可以编写一个宏来计算一个常量表达式,该常量表达式的值是2的幂次幂,等于有效位数的最高有效位?等效地,这只是幅度小于或等于输入的2的最大乘方. 出于这个问题的目的,我们可以忽略: 接近上溢或接近下溢的值(可以使用?:的有限多次应用来处理它们). 负输入(它们也可以同样处理). 非附件F兼容的实现(在与它们进行浮点运算时并不能做任何有用的事情). ..
发布时间:2020-11-08 21:50:58 其他开发

f#中的参数化测试-这不是有效的常量表达式

由于某些原因,当通过 TestCase attrubute将参数传递给测试时,我收到有关第一个参数的以下错误消息,在这种情况下,该错误消息是一个数组: 这不是有效的常量表达式或自定义属性值 module GameLogicTest = 打开FsUnit 打开NUnit.Framework 打开GameLogic.Examle //这是不是有效的常量表达式或自定义属性值 ..

开关案例标签中的C11和常量表达式求值

遵循此问题为什么不gcc允许const int作为大小写表达式吗?,基本上与或。是否有任何方法可以将具有恒定索引的常量数组用作C的转换案例标签?。 p> 从第一个链接开始,我试图替换: 案例FOO: // aka'const int FOO = 10' with: case((int)“ toto” [0])://不能是任何东西,但是*常量 ..
发布时间:2020-10-08 07:13:53 C/C++开发

C中构成常量表达式的细节是什么?

C定义了至少3个级别的“恒定表达”: 恒定表达(不合格) 算术常量表达式 整数常量表达式 6.6第3段内容为: 常量表达式不得包含赋值,增量,减量,函数调用, 或逗号运算符,除非它们包含在$ p $ b的子表达式。 所以这意味着 1,2 不是常数表达式吗? 第8段显示: 算术常量表达式应具有算术类型,并且仅应具有 个操作数,这些操作数是整数常量,浮点常量 ..
发布时间:2020-10-08 06:29:35 其他开发

常量表达式中的条件运算符

我在MSVC 10上尝试了以下代码片段,在该代码片段中可以正常工作。 枚举 { FOO =(sizeof(void *)== 8?10:20) }; int main() { return FOO; } 我想知道的是:C ++标准(最好是C + +98)允许我在所有操作数都是常量表达式的情况下在常量表达式中使用条件运算符,或者这是Microsoft的古怪/ ..
发布时间:2020-10-08 00:32:27 C/C++开发

如何检查参数是否为C预处理程序宏中的整数常量表达式?

我目前正在清理现有的C库,以无耻地发布它. 预处理器宏NPOT用于在编译时为给定的整数常量表达式计算下一个更大的2的幂.该宏通常用于直接初始化.对于所有其他情况(例如使用可变参数),有一个内联函数具有相同的功能. 但是,如果用户传递变量,则算法将扩展为大量的机器代码.我的问题是: 如何防止用户将整数常量表达式以外的任何内容传递给我的宏? #define NPOT(x) com ..
发布时间:2020-05-05 08:51:54 其他开发