问题标签 [constant-expression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
128 浏览

python-2.7 - 编译 python 源代码而不进行常量折叠优化

我有一个python片段如下

将其编译为 AST 给出:

请注意,在生成的 AST6 * 8没有优化为 48。

但是,如果我编译这个生成的 AST 并反汇编,6 * 8则替换为48.

我的问题

如何在没有常量折叠优化的情况下将代码编译为字节码?我需要这样做来开发一个混淆器。

0 投票
3 回答
779 浏览

c - 是否可以在初始化程序中使用三元运算符初始化静态数组?

是否可以在初始化程序中使用三元运算符初始化静态数组?例如:

其中 Test() 是一个返回 0 或 1 的函数

0 投票
1 回答
232 浏览

optimization - 为什么这个 MUX 带有 const。输入没有优化?

这是组合综合的后续问题:更好的技术映射结果

我正在使用0.5+ (git sha1 f13e387, gcc 5.3.1-8ubuntu2 -O2 -fstack-protector-strong -fPIC -Os)带有以下合成脚本的 Yosys(版本):

...综合以下 Verilog 代码 (test.v):

综合结果包括一个LIB_MUX4具有两者的实例,S0并由S1两个实例绑定LIB_TIELO

为什么 Yosys 看不到这一点S0并且S1保持不变并将输出减少到这样的东西

反而?

我尝试使用clean -purge,opt_muxtreeopt_clean命令,但没有成功 - 静态LIB_MUX实例始终在生成的网表中。

0 投票
2 回答
485 浏览

f# - 为什么我不能把这个字符串变成文字?

我需要将字符串转换为文字,以便可以将其作为参数传递给 CsvProvider。但我做不到。下面的代码运行没有问题:

但是,当添加以下两行

最后我得到消息This is not a valid constant expression or custom attribute value

我什至尝试制作 trp 的副本,但这没有帮助。

有什么办法可以规避这个问题?

0 投票
1 回答
211 浏览

c++ - 枚举值依赖函数调用

这是我的应用程序的简化设置:

我想要做的是根据状态成员中的当前值调用 step 函数。在 step() 调用中,状态不是常量表达式,这是一个问题。有没有办法编写这个依赖枚举的函数调用而不需要一些大的丑陋开关?

(这只是一个简化的例子,只有一个功能和两个状态)。

0 投票
2 回答
622 浏览

c++ - c++98中的常量表达式函数

我对 c++98 常量表达式有以下问题。这是模板结构的示例..它将在编译时接收大小..

是否有可能在没有 c++11 constexpr 的情况下将此大小作为常量表达式?看看 GetCount()...

我希望能够做这样的事情:

编辑:

我找不到 C++ 98 的方法,似乎根本不可能。

0 投票
1 回答
57 浏览

swift - swift教程中常量的隐式类型

当我从教程中做示例时,我从常量变量主题中得到了一些问题。

如果有人解释我的例子,我将不胜感激。

在此处输入图像描述

0 投票
1 回答
334 浏览

c# - 如何在x => x.property中获取ContstantExpression的名称和值

我正在创建一种简单的方法来获取C# 中的表达式的Name和。Value但是,我发现了一个我无法弄清楚的案例。请看下面的代码:

.GetValue()方法是我的扩展方法。

基本上,这个表达式树按顺序由 a LambdaExpression、两个MemberExpressions 和 a组成ConstantExpression

tuple.Item2当我尝试memberExpression.Member.Name从最后一个MemberExpression. 这给了我“元组”而不是“Item2”。我怎样才能得到“Item2”呢?

此外,当我尝试获取表达式的值时,我得到整个元组而不是Item2. 我正在使用以下方法来获取值:

在哪里MemberExpression再是最后MemberExpression我在这里做错了什么? 我失踪的确切情况是什么?

先感谢您

0 投票
2 回答
162 浏览

c++ - 当短路禁用其评估时,是否正在读取常量表达式中允许的结束指针

考虑示例:

代码在[gcc][clang]中都可以编译,但真的应该这样吗?我知道表达式""[1]不需要评估,因为它是短路的。但是标准不是很清楚表达式是否真的可以作为核心常量表达式。相关的 [expr.const]/2尤其是部分:

如果 e 满足核心常量表达式的约束,但对 e 的评估将评估具有未定义行为的操作,如本文档的 [library] 到 [thread] 中指定的,则未指定 e 是否为核心常量表达式。

提出了我的疑问...

0 投票
0 回答
104 浏览

java - java未定义的编译时间常数

JavaSE 6 定义了明确赋值的规则

但是,可以将编译时常量的值分配给它自己的未定义值,这会导致奇怪的行为:

Main.java

编译它:

运行:

输出:

不同的数据类型采用不同的值,例如 String 为 null,float 为 0.0,boolean 为 false 等。

在这一点上,我感觉编译器不知何故被欺骗生成未经检查的常量赋值字节码

尽管在实践中这种情况是一种极端情况,但我很好奇为什么编译器会在这种特殊情况下被欺骗