这里的小xml建模练习.
假设我们有一些逻辑表达式:(x&y)| (p&q)
无论出于何种原因,它都需要用XML表示.
这是一个快速的刺,但我认为这是笨拙的:
<expr>
<or>
<and>
<e>x</e>
<e>y</e>
</and>
<and>
<e>p</e>
<e>q</e>
</and>
</or>
</expr>
Run Code Online (Sandbox Code Playgroud)
另一个刺伤,对我来说没有味道:
<expr>
<or>
<and l="x" r="y"/>
<and l="p" r="q"/>
</or>
</expr>
Run Code Online (Sandbox Code Playgroud)
你会怎么做?
有一天,我试图使用SDL多媒体库编写一个小型C++编程,然后我遇到了这个小麻烦,我最终通过反复试验解决了这个问题.问题是,我理解我为解决问题所做的工作,但我并不了解问题的本质!
问题在于SDL中的键盘事件处理.处理单键按下以退出程序的代码是直截了当且简单的.[eventQueue是一个SDL_Event结构]
//checks for keypress events..
if ( eventQueue.type == SDL_KEYDOWN )
{
//note: uses the boolean logical '==' equals operator..
if ( eventQueue.key.keysym.sym == SDLK_ESCAPE )
{
running = false;
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,只需按下ESCAPE键就可以结束主循环并导致程序清理和关闭......
但是...处理使用修饰键(shift/alt/ctrl)的按键所需的代码与'=='运算符无法正常工作.我花了很长时间才发现我需要使用按位AND运算符而不是相等(逻辑?)运算符.
//checks for keypress events..
if ( eventQueue.type == SDL_KEYDOWN )
{
//note: requires the use of the bitwise AND operator..
if (( eventQueue.key.keysym.mod & KMOD_ALT ) && (eventQueue.key.keysym.sym == SDLK_F4 ))
{
running = false;
}
}
Run Code Online (Sandbox Code Playgroud)
我的困惑来自这样一个事实:当使用'keysym.sym'成员时,逻辑运算符'=='工作正常,但是,当使用'keysym.mod'成员时,有必要使用'&'按位AND运算符.
现在,如果我不得不猜测,我会说它与'keysym.sym'只需要处理一个代表键盘上单个键的数字值这一事实有关,而'keysym.mod'有处理shift,ctrl和alt键的各种组合......?
总结一下我的问题: …
我想使用一组布尔值作为词典的关键因此(天气= =晴天和温度= =温暖)将是11或真,真(而天气= =晴天和天气==冷)将是10和(天气==阴天和天气==冷)真的,假的是00,衣服= {11:"短裤",10:"牛仔裤",00:"夹克"}有没有办法做到这一点?我认为它可能需要位操作,我试图尽可能快地保持这个操作时间.
为什么
if (x) {
f();
}
Run Code Online (Sandbox Code Playgroud)
f()
如果x
是一个空字符串调用""
?
不应该将D中的空字符串隐式转换为bool
false
类似于Python中的字符串,并且当空数组执行时(在D中)?
更新:我修正了问题.我错误地颠倒了推理逻辑.幸运的是,聪明的D头脑无论如何理解我的意思;)
我是 C 语言编程的新手,正在编写程序以确定数字是否为 2 的幂。但是作为操作员'!'出现错误 不能应用于 int 类型的操作数。认为相同的程序在 C++ 中运行良好。这是代码:
public static void Main(String[] args)
{
int x;
Console.WriteLine("Enter the number: ");
x = Convert.ToInt32(Console.ReadLine());
if((x != 0) && (!(x & (x - 1))))
Console.WriteLine("The given number "+x+" is a power of 2");
}
Run Code Online (Sandbox Code Playgroud) 我有PowerShell代码
$target_dir = "\\server\share\"
$DelTmpStatus = "init value"
if ( Test-Path ( $target_dir + "receivals.tmp") )
{
del ( $target_dir + "receivals.tmp")
$DelTmpStatus = "Present and delete status $?"
} else {
$DelTmpStatus = "NA"
}
Run Code Online (Sandbox Code Playgroud)
有时它会通过$ DelTmpStatus设置为“初始值”而通过本节。
if-else结构如何不遵循任何一条路径?当给if函数一个错误而不是true或false时,powershell中的if-else结构不执行任何操作吗?
$ PSVersionTable.psversion为3.0
编辑:我自己运行时,无论是完全运行还是分步运行,我都没有任何错误或问题。但是有时计划的作业将运行,而$ DelTmpStatus仍将是“初始值”,我想当\\server\share\
路径由于服务器处于低功耗模式而在一夜之间花费的时间太长而无法响应并且测试路径功能超时时,就会发生这种情况。虽然我不确定这是否是原因。
编辑:做测试的结果
$target_dir
使其遵循else路径并设置$DelTmpStatus
为“ NA”$target_dir = "C:\..\..\invalid\"
在测试路径中使用无效的路径(例如结果),将错误写入stderr并返回true(不理想,但无论如何),使程序顺着尝试删除文件的操作(再次出现错误),然后将其设置$DelTmpStatus
为“存在并删除状态为False”。这并不是特别有帮助的事情,但是至少执行了if-else语句中的代码。在我的Be Prepared Comp Sci 教科书中,我遇到了这个问题:
假设 x、y 和 z 是整数变量,以下三个逻辑表达式中哪一个是等价的,即对于 x、y 和 z 的所有可能值具有相等的值?
(x == y && x != z) || (x != y && x == z)
(x == y || x == z) && (x != y || x != z)
(x == y) != (x == z)
A. None of the three
B. I and II only
C. II and III only
D. I and III only
E. I, II, and III
Run Code Online (Sandbox Code Playgroud)
我选择了“B”,但弄错了。我真的认为我需要帮助理解布尔逻辑。正确答案说的是别的,但我不明白逻辑。以下是正确答案:
表达式 III …
我知道不应该在没有括号的情况下使用 And (&&) 和 OR (||) 在条件语句中。
所以如果你应该同时使用这两个条件,你应该这样做 (A && !B) || (C && D)
但是,在某些代码中我看到他们没有使用括号?那会发生什么?我认为没有编译:
A && !B || C && D
Run Code Online (Sandbox Code Playgroud)
我想它会像 SUMS 或 MULTIPLICATIONS 一样解决,我的意思是,在读取它们时解决它们:
(((A && !B) || C) && D)
Run Code Online (Sandbox Code Playgroud) 我曾经使用repl.it来查看它返回的内容,仅仅是为了好奇,结果发现了
not nil
返回true
为什么?是因为在Lua中一切都应该是真的还是假的?
Repl.it链接:https://repl.it/repls/SanePastelHarrier
y1 = [True, True, False, False]
y2 = [False, True, True, False]
y3 = y1 and y2
print(y3)
>>> [False, True, True, False]
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?在操作中的第三项是False
和True
这个结果True
?
boolean-logic ×10
if-statement ×2
python ×2
boolean ×1
c# ×1
c++ ×1
d ×1
dictionary ×1
java ×1
lua ×1
operators ×1
powershell ×1
sdl ×1
string ×1
xml ×1