问题标签 [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.
python-2.7 - 编译 python 源代码而不进行常量折叠优化
我有一个python片段如下
将其编译为 AST 给出:
请注意,在生成的 AST6 * 8
中没有优化为 48。
但是,如果我编译这个生成的 AST 并反汇编,6 * 8
则替换为48
.
我的问题
如何在没有常量折叠优化的情况下将代码编译为字节码?我需要这样做来开发一个混淆器。
c - 是否可以在初始化程序中使用三元运算符初始化静态数组?
是否可以在初始化程序中使用三元运算符初始化静态数组?例如:
其中 Test() 是一个返回 0 或 1 的函数
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_muxtree
和opt_clean
命令,但没有成功 - 静态LIB_MUX
实例始终在生成的网表中。
f# - 为什么我不能把这个字符串变成文字?
我需要将字符串转换为文字,以便可以将其作为参数传递给 CsvProvider。但我做不到。下面的代码运行没有问题:
但是,当添加以下两行
最后我得到消息This is not a valid constant expression or custom attribute value
。
我什至尝试制作 trp 的副本,但这没有帮助。
有什么办法可以规避这个问题?
c++ - 枚举值依赖函数调用
这是我的应用程序的简化设置:
我想要做的是根据状态成员中的当前值调用 step 函数。在 step() 调用中,状态不是常量表达式,这是一个问题。有没有办法编写这个依赖枚举的函数调用而不需要一些大的丑陋开关?
(这只是一个简化的例子,只有一个功能和两个状态)。
c++ - c++98中的常量表达式函数
我对 c++98 常量表达式有以下问题。这是模板结构的示例..它将在编译时接收大小..
是否有可能在没有 c++11 constexpr 的情况下将此大小作为常量表达式?看看 GetCount()...
我希望能够做这样的事情:
编辑:
我找不到 C++ 98 的方法,似乎根本不可能。
c# - 如何在x => x.property中获取ContstantExpression的名称和值
我正在创建一种简单的方法来获取C# 中的表达式的Name
和。Value
但是,我发现了一个我无法弄清楚的案例。请看下面的代码:
该.GetValue()
方法是我的扩展方法。
基本上,这个表达式树按顺序由 a LambdaExpression
、两个MemberExpression
s 和 a组成ConstantExpression
。
tuple.Item2
当我尝试memberExpression.Member.Name
从最后一个MemberExpression
. 这给了我“元组”而不是“Item2”。我怎样才能得到“Item2”呢?
此外,当我尝试获取表达式的值时,我得到整个元组而不是Item2
. 我正在使用以下方法来获取值:
在哪里MemberExpression
再是最后MemberExpression
。我在这里做错了什么? 我失踪的确切情况是什么?
先感谢您
c++ - 当短路禁用其评估时,是否正在读取常量表达式中允许的结束指针
考虑示例:
代码在[gcc]和[clang]中都可以编译,但真的应该这样吗?我知道表达式""[1]
不需要评估,因为它是短路的。但是标准不是很清楚表达式是否真的可以作为核心常量表达式。相关的 [expr.const]/2尤其是部分:
如果 e 满足核心常量表达式的约束,但对 e 的评估将评估具有未定义行为的操作,如本文档的 [library] 到 [thread] 中指定的,则未指定 e 是否为核心常量表达式。
提出了我的疑问...
java - java未定义的编译时间常数
JavaSE 6 定义了明确赋值的规则
但是,可以将编译时常量的值分配给它自己的未定义值,这会导致奇怪的行为:
Main.java
编译它:
运行:
输出:
不同的数据类型采用不同的值,例如 String 为 null,float 为 0.0,boolean 为 false 等。
在这一点上,我感觉编译器不知何故被欺骗生成未经检查的常量赋值字节码
尽管在实践中这种情况是一种极端情况,但我很好奇为什么编译器会在这种特殊情况下被欺骗