我读到关于Python遵循PEMDAS的内容,即乘法的优先级高于除法。
我运行了以下脚本
print 6*2/1*2
Run Code Online (Sandbox Code Playgroud)
因此 python 应该将其解释为 12/2 即 6 ,因为乘法的优先级高于除法。
但是,答案是24。谁能告诉我问题出在哪里?谢谢!
#include <stdio.h>
int main(){
printf("%d,%d\n", 2 & (1<<1) , 2 & (1<<1)>0 );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序的输出是2,0.
2 & (1<<1)等于 2,大于 0。那么为什么2 & (1<<1) > 0计算结果为零?
c bit-shift operator-precedence bitwise-and relational-operators
我的朋友给我发了个笑话:
问:C和C++有什么区别?
A.没什么,因为:(C - C++ == 0)
我试图改变秩序并陷入困境.
看看这段代码:
public class Test {
public static void main(String args[]) {
int c = 10;
System.out.println(c++ - c);
System.out.println(++c - c);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会回归:
-1
0
Run Code Online (Sandbox Code Playgroud)
我理解postfix和前缀增量.为什么不是这个结果?
0
1
Run Code Online (Sandbox Code Playgroud) 我被教导在数学中我们评估事物,首字母缩略词BODMAS Brackets,Orders(powers),Division,Multiplication,Addition,Subtraction.
我理解在Javascript中,*并且/具有相同的优先级.+也-做.并且使用左关联性.
从我能想到的几个例子来看,它似乎同样有效,产生与BODMA相同的结果.
看起来在数学规则的实际情况中,首先进行加法或减法并不重要.是否可以在5-2 + 3之前完成附加或减法可能很重要.而对于除法和乘法,似乎只有一个问题,当除法时,除了9/3*4 必须首先进行除法.并且Javascript在该实例中首先执行.
但也许有一个例子可以打破它!它给标准数学带来了不同的结果.
Javascript可以打破逻辑数学规则吗?
最新情况:
为了回答自己,在数学时,人们说,PEDMAS D和M优先级相同,从左到右完成.并且同上A和S.你说他们是左联想的,即暗示括号的地方.因此,编程语言"实现PEDMAS"的优先级/优先级,DM和AS是左关联的,完全遵循PEDMAS规则.因此,如果有任何数学规则的破坏,则不是来自M,D,A,S的相关性,这与(常规)数学相同.此外,在数学中,一元减去这里是 - PEUDMAS所以-5 ^ 2 = - (5 ^ 2)= - 25.指数优先于一元减去.虽然javascript可能正确.显然,javascript破坏规则中的浮点,如某些答案中所示,尽管这不是我想到的,因为我的想法纯粹是PEDMAS,但似乎括号与浮点数有所不同,他们不应该在那里在正常的数学中,正如我接受的答案所示.
该管理员的要求作出解释的以下工作如何扔了一个点,这我不确定.
select sysdate + (interval_difference * 1440) - sysdate
from (select systimestamp - (systimestamp - 1) as interval_difference
from dual )
Run Code Online (Sandbox Code Playgroud)
也就是说,加号还是减号都有运算符优先级?文档1列出了运营商订单,如下所示
+----------------------------+-------------------------------------------+ | Operator |Operation | +------------------------------------------------------------------------+ | +, - (as unary operators) | Identity, negation, location in hierarchy | | , PRIOR, CONNECT_BY_ROOT | | +----------------------------+-------------------------------------------+ | *, / | Multiplication, division | +----------------------------+-------------------------------------------+ | +, - (as binary operators) | Addition, subtraction, concatenation | | , || | | +----------------------------+-------------------------------------------+
查询一旦减少就变成了date …
问题是5/3*2.0 /(4%3)+ 5 = 7.0
出于某种原因,我不明白为什么这是有道理的.我首先划分5/6.0 = .83,然后除以(4%3即1)并加5,但我没有得到答案.你能详细解释一下吗?
谢谢.
在 Go Playground 上尝试了以下代码:
package main
import (
"fmt"
)
func main() {
log2Dim := uint32(9)
SIZE := 1 << 3 * log2Dim
fmt.Printf("Result: %v\n", SIZE)
SIZE = 1 << (3 * log2Dim) // => only difference: adding ( )
fmt.Printf("Result: %v\n", SIZE)
}
Run Code Online (Sandbox Code Playgroud)
这是打印出来的:
Result: 72
Result: 134217728
Run Code Online (Sandbox Code Playgroud)
为什么仅仅添加包含and操作的( )语句就会产生巨大的差异?<<*
据此,*具有更高的优先级,这<<是Google搜索bitshift优先级golang的第一个结果。
在 中C,比较条件条件中函数的简单数据类型的返回的最佳方法是什么?例如,有什么区别...
int x;
if(x = functReturnsInt() < 5)
...
Run Code Online (Sandbox Code Playgroud)
和
if(functReturnsInt() < 5)
...
Run Code Online (Sandbox Code Playgroud)
在进行比较之前是否需要存储 functReturnsInt() 的结果?
我刚刚在c中编写了一个代码
#include <stdio.h>
int main()
{
int a=0;
option1: a++=5;
option2: ++a=5;
printf("%d\n",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但它没有编译错误
lvalue required as left operand of assignment
Run Code Online (Sandbox Code Playgroud)
为什么会出错?谢谢!
#include <stdio.h>
int main()
{
int a=-1?2:5 + 8?4:5;
printf("%d\n",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以上程序的输出是2.但为什么呢?请解释
c operators ternary-operator conditional-operator operator-precedence
c ×4
java ×2
bit-shift ×1
bitwise-and ×1
go ×1
if-statement ×1
javascript ×1
math ×1
operators ×1
oracle ×1
python ×1
syntax ×1