此代码有效:
$foo = getFoo();
if (!$foo) $foo = getBar();
if (!$foo) $foo = getJiggy();
if (!$foo) $foo = getWithIt();
Run Code Online (Sandbox Code Playgroud)
我以为我用逻辑运算符看到了它的简化:
$foo = (getFoo() || getBar() || getJiggy() || ...);
Run Code Online (Sandbox Code Playgroud)
我想,第一个真正的语句会获得通过,但相反,它只是设置$ FOO为boolean true,而不是返回值getFoo(),getBar()等等.
有没有像我想的那样简化?
可能重复:
if/elif语句的多个条件
如果满足多个条件之一("或"),我在Python中触发循环循环.该脚本似乎跳过"if"语句并进入内部循环而不满足所需条件.
码
# Begin TestCase
# Main logic: execute RemoteController macro, if expected state == true, set 'Success', else: Fail
for macroname_n in range (32):
handler("RemoteController", "SET", "[{0}_{1}_{2}]".format(testcase, macroname_n, platform), "")
result = pbc_json(disk, testcase_area, testcase, platform, filename_n, coord_n)
filename_n += 1
coord_n += 1
if macroname_n == 15 or 20:
success_counter = 0
for extra_loop in range(15):
handler("RemoteController", "SET", "\"down 4\"", "")
result = pbc_json(disk, testcase_area, testcase, platform, filename_n, coord_n)
filename_n += 1
if result >= 50: …Run Code Online (Sandbox Code Playgroud) 我试图使用逻辑AND运算符,但我得到一些意外的行为.
#include <iostream>
using namespace std;
int main() {
unsigned flags = 0;
cout << "flags = " << flags << endl;
for(int i=0; i<3; ++i) {
flags &= (1 << i);
cout << "Anding with " << (1 << i) << endl;
cout << "flags = " << flags << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
实际产量:
flags = 0
Anding with 1
flags = 0
Anding with 2
flags = 0
Anding with 4
flags = 0
Run Code Online (Sandbox Code Playgroud)
预期产量:
flags …Run Code Online (Sandbox Code Playgroud) 网上有很多问题涉及按位和逻辑运算符之间的差异.希望我做了一个很好的搜索,当在条件语句中使用时,他们都没有专注于它们是否相同,也没有专门用于C语言.大多数人提到C++和C#,我不知道相同的答案是否也适用于C语言.
这是我编写的用于测试正在发生的事情的示例代码:
// Difference between logical && and bitwise & //
#include <stdio.h>
#define TRUE 123>45
#define FALSE 4>2342
void print_tt(int table[][4]);
int main(void) {
int and_tt[2][4]; // AND truth table
int or_tt[2][4]; // OR truth table
// Create truth table for logical and bitwise AND operator all in one 2d array
and_tt[0][0] = TRUE && TRUE ? 1 : 0;
and_tt[0][1] = TRUE && FALSE ? 1 : 0;
and_tt[0][2] = FALSE && TRUE ? 1 : 0;
and_tt[0][3] …Run Code Online (Sandbox Code Playgroud) c bitwise-operators logical-operators conditional-statements
我有一组传入记录,需要在一组定义和存储的逻辑子句下进行评估。一个示例逻辑子句如下:
Acct1 != 'Y' AND Acct2 > 1004 AND Acct3 >= 96 AND Acct4 < 1004 AND Acct5 = 99 AND ((Acct6 <= 9090 OR Acct7 IN (A1,A2,A6) AND Acct1 NOT IN (A3,A4)) AND Formatted LIKE 'LINUX' AND Acct9 NOT LIKE 'WINDOWS' AND (Acct10 = 'N' AND NOT Acct11 = 'N') AND EditableField BETWEEN (10 AND 20) )
Run Code Online (Sandbox Code Playgroud)
我输入到该条款的数据如下:
map.put(Acct1,"Y")
map.put(Acct2,1010)
map.put(Acct3,99)
map.put(Acct4,1015)
map.put(Acct5,99)
map.put(Acct6,9090)
map.put(Acct7,"A3")
map.put(Formatted,"LINUX_INST")
map.put(Updated,"LINUX_TMP")
map.put(Acct10,"Y")
map.put(Acct11,"N")
map.put(EditableFIeld,25)
Run Code Online (Sandbox Code Playgroud)
我必须将填充到映射中的传入记录评估到上面定义的子句上,并根据评估结果打印 true 或 false。
子句条件和映射值也将被更改和执行。
我有以下条件子句需要评估:
!=
>
>= …Run Code Online (Sandbox Code Playgroud) if(1 == 2 || 4)
{
cout<<"True";
}
else
{
cout<<"False";
}
Run Code Online (Sandbox Code Playgroud)
这就是我如何阅读上述内容.如果1等于2或4,则打印为true.否则,打印错误.执行此操作时...打印为true.显然我在这里误解了一些东西.1不等于2或4.这不是假的吗?
我已经阅读了很多关于NOT NULL 与 <>'' 之间的区别
我找到的最好的解释是:
https://www.postgresql.org/message-id/AANLkTilEsUTIeUkZCX9Vc14kciFiuvFBRRE-yen4K_Zi@mail.gmail.com其中指出:
NULL 表示问题尚未回答,因此没有答案,一旦提供可能就有答案,因此您不能真正说答案为空。空意味着答案已经给出,答案是空的。
对于我正在处理的表,我试图仅过滤有效邮政编码的结果(邮政编码是此特定表中的 VARCHAR),我尝试了以下操作:
SELECT postcode FROM customer_table_1
WHERE postcode IS NOT NULL OR postcode <> '';
Run Code Online (Sandbox Code Playgroud)
但是,这在我的结果中给出了一些空白邮政编码。打破这个...
SELECT postcode FROM customer_table_1
WHERE postcode IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
给出一些空白邮政编码,而
SELECT postcode FROM customer_table_1
WHERE postcode <>'';
Run Code Online (Sandbox Code Playgroud)
只在结果中给出有效的邮政编码。因此,查询的 IS NOT NULL 部分没有做我认为的那样。
作为更复杂查询的一部分,我以前使用过:
SELECT postcode FROM customer_table_1
WHERE postcode IS NOT NULL AND postcode <> '';
Run Code Online (Sandbox Code Playgroud)
并达到了预期的效果。不过我一直觉得应该是
SELECT postcode FROM customer_table_1
WHERE postcode IS NOT NULL OR …Run Code Online (Sandbox Code Playgroud) 考虑
bool Fun1()
{
...
}
bool Fun2()
{
}
Run Code Online (Sandbox Code Playgroud)
在我可以拥有的主要代码中的某个地方
if(Fun1() && Fun2()) //option-1
{
}
Run Code Online (Sandbox Code Playgroud)
要么
if(Fun1() & Fun2()) //option-2
{
}
Run Code Online (Sandbox Code Playgroud)
在VS2012中似乎option-1没有确保在发生这两种功能时始终执行这两项功能option-2.具体来说,如果其中一个函数返回,false则不执行其他函数option-1.但是,整体代码要求对它们的正确行为进行评估,这是我能够实现的option-2.我想知道这种行为是否option-2可以从编译器改为编译器(也有优化级别)或由标准确保?
假设我有一个整数数组表示棋盘上的棋子;
int board[8][8];
Run Code Online (Sandbox Code Playgroud)
在我的国际象棋游戏中,我目前正在编写一个生成器函数,它将返回所有合法移动的整数向量。
当然,我将使用if 语句
我现在需要检查棋盘上的某个元素相对于棋盘上的一块
例如,如果我有一个棋子;
board[row][col] == 'p';
Run Code Online (Sandbox Code Playgroud)
我需要生成[row+1][col],[row+2][col]并且在某些情况下,如果它可以攻击一块,那么列中也会发生变化。
但是如果一块位于 的任何边缘board,board[row+1][col]将返回索引超出范围
出于这个原因,我需要一个额外的 if 语句。
我的问题是,我应该使用:
if (pieceisnotonedge && board[row+1][col] == 0)
Run Code Online (Sandbox Code Playgroud)
或者
if (pieceisnotonedge)
{
if (board[row+1][col] == 0)
}
Run Code Online (Sandbox Code Playgroud)
对于第一个示例,如果pieceisnotonedge返回false,它还会检查下一个条件吗?因为如果是这样,那我就有麻烦了。
我认为由于某种原因,当我使用逻辑 AND 而不是嵌套的 if 语句时,我的程序不起作用。我制作了一个俄罗斯方块克隆,它具有保持功能,当玩家按下 C 键时可以保持/存储一个块。我有一个布尔值,可以防止玩家无法控制地交换块。
出于某种原因,这有效:
if (bKey[5]) //When C key is pressed
{
if (!pieceHold) //boolean to prevent player from holding the C key and swapping blocks constantly/uncontrollably
{
if (!bPieceHeld) //check to see if player is not holding a block
{
r++;
nHoldPiece = nCurrentPiece; //set empty hold piece into the current piece
nHoldRotation = nCurrentRotation;
nCurrentPiece = nNextPiece; //set the current piece into the next piece
nNextPiece = rng[r - 1];
nCurrentX = nFieldWidth / …Run Code Online (Sandbox Code Playgroud) c++ ×5
if-statement ×3
algorithm ×2
c ×1
for-loop ×1
java ×1
logic ×1
loops ×1
null ×1
operators ×1
optimization ×1
parsing ×1
php ×1
postgresql ×1
python ×1