所以,我正在看一个C代码,并在while循环中看到了这种情况:
while(x&&D(x-1),(x/=2)%2&&(1))
我搜索了但只找到了一个命令,然后找到条件,而不找到两个条件。
答案 0 :(得分:1)
','运算符在您的上下文中评估第一个条件会舍弃结果,然后评估第二个条件。
x && D(x-1)评估此条件,但不考虑结果。自从 (x / = 2)%2 &&(1)x值用于在第一条件下对'x'所做的更改用于第二条件,但是您的while循环不考虑第一条件的真实性。
(x / = 2)%2 &&(1),此处(x / = 2)评估为x = x / 2。然后对结果应用模数(%)运算符。因此,假设您对第一个条件求值后的x值为11,则x / = 2求x为5,然后5%2为1(提醒您5/2)。
&&是逻辑AND运算符。如果&&的左侧为true,则评估右侧。在上面的示例中,由于左侧为true(结果为1),右侧已经为1,因此您的(x / = 2)%2 &&(1)的计算结果为True。
我希望这能回答您的疑问。请记住,用逗号运算符可以评估左侧条件/逗号的表达,但结果将被丢弃。
在下面的链接中,您几乎看不到逗号运算符。 https://www.geeksforgeeks.org/comna-in-c-and-c/